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、登录网站,成功

使用上面设置的超级管理员账户密码登录

 

posted @ 2022-08-27 21:32  xiaoyanhahaha  阅读(1305)  评论(0编辑  收藏  举报