docker部署django项目实践
项目目录如下:
django_test
|--compose/
|--mysql/
|--mysql.conf
|--nginx/
|--Dockerfile
|--log
|--nginx.conf
|--ssl
|--djangosite/
|--apps/
|--djangosite/
|--Dockerfile
|--manage.py
|--pip.conf
|--requirements.txt
|--start.sh
|--usite_wsig.ini
|--docker-compose.yaml
数据库配置文件
# mysql.conf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8mb4
port = 3306 # 端口与docker-compose里映射端口保持一致
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
[client]
port = 3306
default-character-set=utf8mb4
[mysql]
no-auto-rehash
default-character-set=utf8mb4
Nginx配置
# nginx Dockerfile
FROM nginx:latest
# 删除原有配置文件,创建静态资源文件夹和ssl证书保存文件夹
RUN rm /etc/nginx/conf.d/default.conf \
&& mkdir -p /usr/share/nginx/html/static \
&& mkdir -p /usr/share/nginx/html/media \
&& mkdir -p /usr/share/nginx/ssl
# 设置Media文件夹用户和用户组为Linux默认www-data, 并给予可读和可执行权限,
# 否则用户上传的图片无法正确显示。
RUN chown -R www-data:www-data /usr/share/nginx/html/media \
&& chmod -R 775 /usr/share/nginx/html/media
# 添加配置文件
ADD ./nginx.conf /etc/nginx/conf.d/
# 关闭守护模式
CMD ["nginx", "-g", "daemon off;"]
# nginx.conf
upstream django {
ip_hash;
server web:8000; # Docker-compose web服务端口
}
server {
listen 80; # 监听80端口
server_name localhost; # 可以是nginx容器所在ip地址或127.0.0.1,不能写宿主机外网ip地址
charset utf-8;
client_max_body_size 10M; # 限制用户上传文件大小
location /static {
alias /usr/share/nginx/html/static; # 静态资源路径
}
location /media {
alias /usr/share/nginx/html/media; # 媒体资源&#x