11 - Docker-Compose 部署Python项目
1、准备一个Python项目
基于Python语言的一个接口自动化测试平台,是一个Web项目
1. 从Gitee上下载项目
2、在本机的D盘根目录新建一个文件夹docker-python,并把下载的项目解压到该文件夹下
3. 用PyCharm打开:auto_test_platform\auto_test_platform\settings.py
4. 修改文件内容: 比如数据库的账号密码之类的,还有其他的一些信息
2、安装一个Mysql容器
方式:使用docker-compose方式安装
1、在项目根目录中,创建一个docker-compose.yml文件
services:
auto_test_platform_mysql:
restart: always
image: daocloud.io/library/mysql:5.7.6
container_name: auto_test_platform_mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
MYSQL_DATABASE: auto_test_plt
MYSQL_USER: auto_test_plt
MYSQL_PASSWORD: XXX
volumes:
- ./mysql/data:/var/lib/mysql
- ./default.cnf:/etc/mysql/conf.d/default.cnf
networks:(# 将tomcat、mysql等容器放在同一个局域网里,方便互相访问 一个容器里面可以加很多个网络)
- net1
auto_test_platform_gunicorn:
build:
context: ./
dockerfile: Dockerfile
restart: always
environment:
TZ: Asia/Shanghai
image: auto_test_platform:1.0
container_name: auto_test_platform_gunicorn
working_dir: /app/auto_test_platform
volumes:
- ./auto_test_platform:/app/auto_test_platform
ports:
- 8000:8000
depends_on:
- auto_test_platform_mysql (# gunicorn容器依赖于mysql容器,mysql容器先启动后gunicorn容器才启动)
networks:
- net1
auto_test_platform_nginx:
image: nginx:latest
container_name: auto_test_platform_nginx
volumes:
- ./auto_test_platform/static:/static
- ./auto-test-platform-nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- 8088:80
depends_on:
- auto_test_platform_gunicorn (# nginx容器依赖于gunicorn容器,gunicorn容器先启动后nginx容器才启动)
networks:
- net1
networks:
net1:
driver: bridge
2、在文件夹docker-python与项目同级的目录下,创建数据库配置文件default.cnf(为mysql设置字符编码集)
[mysqld]
character-set-server = uft8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
3、安装Gunicorn容器(类似于Java中的Tomcat)
gunicore容器用来部署python项目:下载一个python的标准容器,然后在python容器里面部署代码,以及安装项目中各个代码库的依赖
1、在文件夹docker-python与项目同级的目录下,创建requirements.txt文本(项目中需要用到的所有代码库)
Django==3.1.4
mysqlclient==2.0.1 (# 代码库,来操作数据库的)
gunicorn(#:执行Django程序的,默认下载最新的版本号)
2、在文件夹docker-python与项目同级的目录下,创建dockerfile文本,来下载依赖的代码库,并启动项目
FROM python:3.8
COPY ./requirements.txt /app/
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
ENTRYPOINT cd /app/auto_test_platform; python manage.py collectstatics -c --no-input; python manage.py migrate; gunicorn -b 0.0.0.0:8000 auto_test_platform.wsgi;
3、再次编辑docker-compose.yml文件,指定gunicorn容器(该容器用来放置开发的代码)
4、安装Nginx容器来管理静态资源
1、在文件夹docker-python与项目同级的目录下,创建nginx的配置文件auto-test-platform-nginx.conf,并编辑
server {
listen 80;
server_name auto_test_platform (# 即项目名称)
location /static/ { (# 设置静态资源)
autoindex on;
alias /static/;
}
location / {
proxy_pass http://auto_test_platform_gunicorn:8000;
proxy_set_header Host $host
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2、再次编辑docker-compose.yml文件,指定nginx容器
5、设置一个自定义的docker网络
把3个容器通过桥接的方式,放在一个网络中,方便三个容器可以使用容器名称互相访问
1、再次编辑docker-compose.yml文件,指定网络
6、最终的项目目录
将根目录下的docker-compose.yml文件剪切到与其它配置文件同级的目录下:
7、清空docker服务器上的容器
先检查当前Docker服务器上所有容器,然后停止所有容器,并删除所有容器,是为了防止端口重复,最后检查当前容器
docker-compose down
8、上传所有配置文件至docker服务器
将docker-python整个文件夹上传到linux服务器的/root/docker-python文件夹下
9、运行docker-compose
docker-compose up -d
10、本地访问网站
1、http://<docker服务器IP>:8000/admin (可以正常访问,说明gunicorn部分是正常的)
2、http://<docker服务器IP>:8088/admin (可以正常访问的话,说明nginx部分是正常的,有静态样式的、有css、有图片等的)
11、进入gunicorn容器,设置初始的后台管理系统超级管理员
docker exec -it 容器标识 bash
在项目路径下执行命令: python manage.py createsuperuser
输入用户名密码等等一系列
12、登录网站,成功
使用上面设置的超级管理员账户密码登录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY