制作Vue項目的Docker鏡像
1.使用nginx鏡像作為基礎鏡像,vue項目npm run build打包成dist目錄
2.在Linux環境新建一個目錄,將dist拷貝到這個目錄中
3.在同級目錄新建文件“Dockerfile”, 並輸入下面的命令。即
指定基礎鏡像→拷貝dist目錄到nginx的/usr/share/nginx/html/目錄→拷貝nginx配置文件到/etc/nginx/nginx.conf
FROM nginx COPY ./dist/ /usr/share/nginx/html/ COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf 內容如下:
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; client_max_body_size 20m; server { listen 80; server_name www.aaaaaa.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } }
4.打包鏡像,輸入下面的命令: 給鏡像打tag為nginx-docker(取個自己喜歡的名字), 命令最后的點是為了給Docker引擎指定構建時上下文環境使用的目錄,是不可缺少的。
docker build -t nginx-docker .
5.此時鏡像已經構建完成, 只需要輸入命令就可以了,命令如下;
docker run --name nginx-vue -p 8030:80 -d nginx-docker
6.瀏覽器輸入localhost:8030 訪問項目
制作Flask項目的Docker鏡像
1.使用Python鏡像作為基礎鏡像
2.在Linux環境新建一個目錄,將Flask項目目錄拷貝到這個目錄中
3.在同級目錄新建文件“Dockerfile”, 並輸入下面的命令
FROM python:3
ADD ./flask_demo /usr/src/app/DQ_QUES
# 設置app文件夾是工作目錄
WORKDIR /usr/src/app/DQ_QUES
# 配置環境變量,這樣python會在該變量下找需要的模塊名
ENV PATH=$PATH:/usr/src/app
ENV PYTHONPATH /usr/src/app
# 安裝支持
RUN pip install --no-cache-dir -r requirements.txt
# 配置啟動docker后自動運行的文件
CMD [ "python", "backend_server.py" ]
4.構建鏡像
docker build -t flask_ques .
5. 啟動docker鏡像, 至此Flask服務已經運行起來了
docker run -it --name flask-test2359 -p 5000:5000 -d flask_ques
Flask配置:
直接運行flask文件
app.run(debug=True)
的方式, 默認啟動在127.0.0.1:5000 上,此時只有本機才能訪問flask服務; 因此需要寫成下面的形式,才能使flask服務被所有人訪問:
app.run(host='0.0.0.0', port=5000, debug=True)
拉取mySQL鏡像並啟動
1. 在終端中輸入 docker search mysql , 查詢可以下載的鏡像, 選擇下載次數最多的即可
2. 拉取鏡像: docker pull mysql:latest
3. 然后啟動mySQL鏡像
docker run -itd --name mysql-test -p 3307:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
參數說明:
- -p 3306:3306 :映射容器服務的 3306 端口到宿主機的 3306 端口,外部主機可以直接通過 宿主機ip:3306 訪問到 MySQL 的服務。
- MYSQL_ROOT_PASSWORD=123456:設置 MySQL 服務 root 用戶的密碼
- -v : 指定數據卷,意思就是將mysql容器中的/var/lib/mysql(這個是數據庫所有數據信息文件)映射到宿主機/data/mysql里面。
4. 此時已經啟動mySQL鏡像成功, 通過 docker ps命令查看下已啟動的容器吧 .
5. 若需要遷移數據庫數據, 請看下方步驟:
a. 導出表結構:
docker exec -it db_3302(docker中數據庫容器名稱) mysqldump -u root -p root(密碼)--force(強制執行) -R -E -d
--databases test>/mybackup/backup/db/xxxx.sql(導出文件存放目錄)
b. 導出表數據:
docker exec -it db_3302(docker中數據庫容器名稱) mysqldump -u root -p root --force -t
test>/mybackup/backup/db/yyyy.sql(導出文件存放目錄)
c. 如果需要導入表數據, 則在宿主機輸入命令遠程連接docker mySQL
mysql -uroot -p root(密碼) -h 10.10.10.10(IP地址) -P 3307(端口號)
d. 連接成功后, 查看數據庫, 然后選擇需要導入的數據庫
show databases; use test;
e. 先導入表結構,再導入表數據
source /mybackup/backup/db/xxxx.sql (步驟a存儲的路徑)
source /mybackup/backup/db/yyyy.sql (步驟b存儲的路徑)
Docker常用指令
# docker目錄: /var/lib # 將正在運行的容器打包為鏡像: docker commit 容器名 鏡像名:標簽 # Docker Commit一般用做從一個運行狀態的容器來創建一個新的鏡像 # 定制鏡像應該用DockerFile來完成。
# 鏡像管理 #查看所有鏡像: docker images # 搜索鏡像 docker search busybox # 拉取下載 docker pull busybox:latest # 導出: docker save busybox > busybox.tar # 導入 docker load < busybox.tar # 刪除 docker rmi busybox:latest # 更改鏡像名 docker tag busybox:latest busybox:test # 查看創建歷史: docker history busybox
鏡像運行后就變成了一個container
# 容器管理 # 運行容器 docker run -d --name=busybox busybox:latest ping www.baidu.com # 查看運行的容器: docker ps docker ps -a # 查看容器中運行的進程: docker top busybox # 查看資源占用 docker stats busybox # 容器操作 docker start docker restart docker stop docker kill busybox # 暫停容器 docker pause / unpause busybox # 強制刪除容器 docker rm -f busybox