0.项目目录
1. dockerfile
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
RUN pip install pip -U -i https://pypi.tuna.tsinghua.edu.cn/simple
ADD requirements.txt /code/
# 添加 pip 清华镜像源
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
ADD . /code/
- 这里主要是制作django运行的镜像,和我上一篇flask部署博文类似
2.docker-compose.yaml
version: "3.9"
services:
app:
restart: always
build: .
command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8002"
volumes:
- .:/code
ports:
- "8001:8002"
depends_on:
- mysql_db
mysql_db:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=your_passsword
- MYSQL_DATABASE=your_database
- 这里要注意的点是我们在启动django后需要先更新数据库信息
python manage.py makemigrations && python manage.py migrate 这两个命令是不可少的,然后再加上python manage.py runserver 0.0.0.0:8002 ,8002这个端口是和后面的8001:8002对应的,8001是映射出来的端口 - mysql应用的配置中需要加上密码和数据的账号
- docker-compose启动后会自动创建网络,在容器内部中我们在django的配置中可以用
mysql_db 这个应用名当作ip地址来连接
3. settings.py配置
ALLOWED_HOSTS = ['*']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER':'xxx',
'PASSWORD':'xxxx',
'HOST':'mysql_db',
'PORT':'3306'
}
}
4.requirements.txt
Django==2.2.12
pymysql
mysqlclient
这里的三个库必须的,因为django的orm是基于mysqlclient的
5.部署
- 在docker-compose.yaml文件所在的目录下中运行
docker-compose up 一键部署
|