部署django服务 docker+uwsgi+django+mysql+jenkins集成
常用命令
docker
docker exec -it django_python bash # 进入容器
docker rmi -f $(docker images -q) # 删除全部镜像
docker rm $(docker ps -a -q) # 删除全部容器
docker stop $(docker ps -a -q) # 停止全部容器
docker logs --tail=1000 platform_python
uwsgi
find / -name uwsgi
ln -s /var/python3/bin/uwsgi /usr/bin/uwsgi # 建立软连接
uwsgi --ini /home/project/autotestplatform/uwsgi.ini
django
python manage.py makemigrations
python manage.py migrate
python
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
一、docker-compose
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
volumes:
# - "/home/project:/var/jenkins_home/workspace"
- "/home/jenkins:/var/jenkins_home"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker"
environment:
JAVA_OPTS: -Duser.timezone=Asia/Shanghai
ports:
- "10240:8080"
- "10241:50000"
user: root
links:
- "mysql"
# redis:
# image: "redis:alpine"
# container_name: redis
# restart: always
# volumes:
# - ../redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
# - ../redis/data:/data:rw
# command: --requirepass "123456"
# ports:
# - "6379:6379"
# expose:
# - 6379
mysql:
image: "mysql"
container_name: mysql
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
expose:
- 3306
environment:
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_USER: 'js'
MYSQL_PASS: '123456'
platform:
image: platform_python
build: .
container_name: platform_python
volumes:
- "/home/jenkins/workspace:/home/project"
ports:
- "8000:8000"
depends_on:
- mysql
- jenkins
links:
- "mysql"
二、dockerfile
FROM python:3.9.7
RUN mkdir /home/project
WORKDIR /home/project/autotestplatform
CMD ["sh", "/home/project/autotestplatform/start.sh"]
三、uwsgi.ini
[uwsgi]
http= 0.0.0.0:8000
chdir=/home/project/autotestplatform
wsgi-file = autotestplatform/wsgi.py
processes = 1
threads = 4
master=True
pidfile=uwsgi.pid
;daemonize=uwsgi.log # 注释掉才会运行起容器
static-map = /static=/var/python3/lib/python3.9/site-packages/rest_framework/static # 静态文件没加载的话就去找restframework的static文件夹
四、start.sh
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python manage.py makemigrations&& # 1. 生成数据库可执行文件,
python manage.py migrate&& # 2. 根据数据库可执行文件来修改数据库
uwsgi --ini /home/project/autotestplatform/uwsgi.ini # 5. 用 uwsgi启动 django
五、注意事项
- 本地文件路径 映射容器Jenkins路径
- 本地文件路径映射后会出现Jenkins workspace目录 映射到python项目下
- 构建任务的名称会生成文件夹,同python项目配置的文件夹名称一致