通过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