首先我们先分析一下项目部署需要哪些东西:
我要把我的一个前段用v2;结合后端的falsk 框架的这样类型的项目;
给部署上去;
我是项目在 linux系统上进行部署的;我需要一个docker容器来,安转我们各种需要的 应用;
首先我们 要 python3.7 和环境的搭建 、 mysql数据库(需要将我们的本地数据导入)
、 redis数据库 、 nginx1(来存放我们的前台代码)、 nginx2(来存放我们的台代码);
这样我们算一下我们需要五个容器; 另外我们还需要一个独角兽;在python内部进行下载;
来处理我们的接口,启动项目;
那么好我们上图来具体分析一下:

1.安装Docker
yum install -y yum-utils #安装yum源管理工具
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 添加阿里云的docker源
yum install -y docker-ce docker-compose # 通过yum工具来安装docker
systemctl restart docker # 启动docker
docker version # 检验docker是否安装成功
2. 拉取必要的镜像
docker pull nginx:1.22.1
docker pull python:3.7
docker pull mysql:5.6
docker pull redis:6.2.7
docker pull elasticsearch:7.17.6
拉取完成以后
3. 创建nginx的配置文件
在宿主机的
/home/www创建default.conf文件,输入以下内容
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
4.上传本地开发时候数据库的SQL文件
4.1 导出sql(在自己电脑上的mysql里面)
# mysqldump -u 数据库用户名 -p 数据库名 > sql文件名
# 在cmd里面直接执行就可以了!注意!不是mysql里面,不用登录MySQL
mysqldump -u root -p 2202book > D:/book.sql
4.2 把sql文件上传到/home/www目录
cd /home/www
rz
# 如果没有rz命令 安装即可
# yum install -y lrzsz
5. 启动容器
# docker run [可选参数] 镜像名[:tag] [命令]
# --name 指定容器的名字,后续可以通过名字对容器进行操作
# -d 指定容器后台运行
# -i 指定容器以交互的形式运行
# -t 新开启一个终端 一般来说-it一块使用
# -e 设置一些容器内的环境变量,容器内的程序会用到
# -v 卷挂载!
# -p 端口映射!
# 启动nginx容器 - 前台
docker run --name=nginx -d -p 80:80 -v /home/www/home_app:/www -v /home/www/default.conf:/etc/nginx/conf.d/default.conf nginx:1.22.1
# 启动nginx容器 - 后台
docker run --name=nginx2 -d -p 8080:80 -v /home/www/admin_app:/www -v /home/www/default.conf:/etc/nginx/conf.d/default.conf nginx:1.22.1
# 启动python容器
docker run --name=python37 -d -p 5000:5000 -v /home/www/api_app:/www python:3.7 /bin/sh -c "while true;do echo hi;sleep 5;done"
# 启动mysql容器
docker run --name=mysql -d -p 3306:3306 -v /home/www/book.sql:/book.sql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
# 启动redis容器
docker run --name=redis -d -p 6379:6379 redis:6.2.7
# 启动es容器
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx512m" --name=es elasticsearch:7.17.6
启动完成后,效果如下
[root@iZbp12a0ywbz3y7pgqefacZ www]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9d8e33494fe elasticsearch:7.17.6 "/bin/tini -- /usr/l…" 7 seconds ago Up 6 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp es
77b6b36859cc redis:6.2.7 "docker-entrypoint.s…" 11 seconds ago Up 10 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
a5f3735a1ed7 mysql:5.6 "docker-entrypoint.s…" 15 seconds ago Up 14 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp mysql
a97c50875471 python:3.7 "/bin/sh -c 'while t…" 19 seconds ago Up 18 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp python37
3d023bb2b0dc nginx:1.22.1 "/docker-entrypoint.…" 24 seconds ago Up 23 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp nginx2
5cd2b87b8c0e nginx:1.22.1 "/docker-entrypoint.…" 31 seconds ago Up 30 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
/home/www目录下,内容有这些东西:
[root@iZbp12a0ywbz3y7pgqefacZ www]# ll
total 96
drwxr-xr-x 2 root root 4096 Nov 4 10:26 admin_app # 放后台的前端代码
drwxr-xr-x 2 root root 4096 Nov 4 10:26 api_app # 放flask程序
-rw-r--r-- 1 root root 78545 Nov 3 09:55 book.sql # sql文件
-rw-r--r-- 1 root root 284 Nov 4 10:26 default.conf # 放nginx的配置文件
drwxr-xr-x 2 root root 4096 Nov 4 10:10 home_app # 放前台的前端代码
6. 编译并上传前后台的vue代码
# 修改前端代码的配置文件和main.js里面的baseURL地址
...
axios.defaults.baseURL = "http://114.55.114.218:5000/home"
...
# 后台项目的.env.production文件里面添加
VUE_APP_BASE_HOST = 'http://114.55.114.218:5000/'
VUE_APP_BASE_API = 'http://114.55.114.218:5000/admin'
# 前台代码编译
npm run build
# 后台代码编译
npm run build:prod
# 编译完以后,会出现一个dist的文件夹,把整个dist文件夹里面的内容,不包括dist目录,上传到对应的目录里面去就可以了。建议:压缩包上传
# zip压缩包上传完成后解压即可
unzip dist.zip
# 如果unzip没有这个命令,安装即可
# yum install -y unzip
7. 导入数据库
# 进入数据库容器
docker exec -it mysql /bin/bash
# 进入以后,连接数据库
mysql -uroot -p
# 连接上数据库以后,创建数据库
create database 2202book charset=utf8;
# 选中数据库
use 2202book;
# 导入
source /book.sql
8. 上传后端代码并运行
8.1 修改flask的配置
# 查看redis容器的ip
docker inspect redis | grep IPAddress
# 172.17.0.6 这就是redis容器的ip
# 查看mysql容器的ip
docker inspect mysql | grep IPAddress
# 172.17.0.5 这就是redis容器的ip
# 查看es容器的ip
docker inspect es | grep IPAddress
# 172.17.0.7 这就是redis容器的ip
# 修该对应代码位置的ip
8.2 上传后端代码
cd api_app/
rz
8.3 进入python37容器,并安装相应的环境
# 进入容器
docker exec -it python37 /bin/bash
# 进入flask源代码的根目录
cd /www
# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
# 安装独角兽
pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
8.4 启动flask程序
cd /www
nohup gunicorn -w 8 -b 0.0.0.0:5000 app:app &
# -w 指定工作进程个数
# app:app 第一个app指的是根目录下的app.py文件。也就是入口文件名字
# 第二个app指的是 app.py下面的flask核心对象的变量名字

本文详细介绍了如何在Linux系统上使用Docker部署一个前端V2与后端Flask框架的项目。部署过程包括:安装Docker,拉取镜像,创建Nginx配置文件,导入数据库,启动容器,编译并上传Vue代码,最后导入数据库和运行后端Flask应用。
162

被折叠的 条评论
为什么被折叠?



