django部署:docker-compose+mysql
0.项目目录1. dockerfileFROM python:3.7ENV PYTHONUNBUFFERED 1RUN mkdir /codeWORKDIR /codeRUN pip install pip -U -i https://pypi.tuna.tsinghua.edu.cn/simpleADD requirements.txt /code/# 添加 pip 清华镜像源RUN pip i
·
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应用的配置中需要加上密码和数据库名字,用户名默认为root,MYSQL_DATABASE设置之后会默认帮你创建一个名为数据库
- 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'
}
}
-
这里的HOST我们可以直接用上面的docker-compose的应用名来代替,因为在容器内部它们有自己的网络,这里的概念类似于局域网
-
这里的ALLOWED_HOSTS一定要按照这个写,不然我们访问不到
4.requirements.txt
Django==2.2.12
pymysql
mysqlclient
这里的三个库必须的,因为django的orm是基于mysqlclient的
5.部署
- 在docker-compose.yaml文件所在的目录下中运行
docker-compose up
一键部署
更多推荐
已为社区贡献1条内容
所有评论(0)