通過docker搭建flask+vue+mysql項目筆記


制作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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM