ubuntu18.04上进行docker部署django项目
下载镜像
本次项目会用到5个镜像分别是nginx、mysql(5.7版本)、redis、python3(3.6版本)、项目前后端代码(私人镜像),只要以后迁移服务器环境都只需下载这5个镜像即可,前4个镜像可以使用官方的虽然配置了镜像源但是下载速度还是偏慢,我们可以把镜像传到腾讯云/阿里云镜像库下载会更快,这里就从官方镜像库下载
nginx镜像(latest版本)
~$ docker pull nginx
mysql(5.7版本)
~$ docker pull mysql:5.7
redis镜像(latest版本)
~$ docker pull redis
python镜像(3.6版本)
~$ docker pull python:3.6
web项目,此为私人源码镜像,使用自己打包的项目镜像即可,私人镜像拉取前需要先登录腾讯云docker registry,公开的则不需要
~$ docker pull ccr.ccs.tencentyun.com/zhangyanc/izone:[tag]
所有镜像拉取完毕,查看镜像信息内容
~$ docker iamges
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 ba7a93aae2a8 3 weeks ago 372MB
redis latest 5d2989ac9711 3 weeks ago 95MB
nginx latest 568c4670fa80 7 weeks ago 109MB
python3 3.6 cf6d1297856f 3 months ago 54.3MB
至此,容器化部署的准备工作就已经结束了,接下来可以进行部署配置了。
docker部署配置
直接来看一下项目的文件构成和文件的作用,可以直接从GitHub拉取:https://github.com/zhangmoumou1/izone-docker
izone_docker #文件名
+----.env # 设置docker-compose的环境变量(文件需要自己创建)
+----izone.env # 项目的一些配置(文件需要自己创建)
+----db # db的挂载目录,挂载到容器
| +----my.cnf # db的配置文件,挂载到容器
+----docker-compose.yml # docker-compose的运行文件
+----nginx # nginx挂载目录,挂载到容器
| +----conf.d # nginx服务配置目录,挂载到容器
| | +----default.conf # nginx服务配置文件,挂载到容器
创建文件.env或者直接修改default.env为.env
这个文件是docker-compose 默认使用的环境变量文件,可以把参数传递到 docker-compose 中,下列文件中填写密码
# db
MYSQL_IMAGE=mysql:5.7
MYSQL_ROOT_PASSWORD=password
# redis
REDIS_IMAGE=redis
IZONE_REDIS_PASSWORD=password
# web
IZONE_IMAGE=[imagename]:[tag]
IZONE_MYSQL_NAME=izone
# nginx
NGINX_IMAGE=nginx
创建izone.env
创建一个 izone.env 文件,里面的环境变量都会传递给django 项目的 settings 文件中使用(其实可以一个也不传,因为环境变量不传的时候有默认值使用),下列文件中填写自己的host、密码、port
# 个性化配置
IZONE_SECRET_KEY=#!kta!9e0)24p@9#=*=ra$r!0k0+85@w+a%7g1bboo9+ad@4_(
IZONE_TOOL_FLAG=True
IZONE_API_FLAG=False
IZONE_DEBUG=True
IZONE_ADD_ALLOWED_HOST=.zhangyanc.club
IZONE_SITE_END_TITLE=izone
IZONE_SITE_DESCRIPTION=izone 是一个Django搭建的博客,本网站后端使用Django框架搭建,前端使用Bootstrap框架,主要分享博主在Python以及其他编程语言的学习心得。
IZONE_SITE_KEYWORDS=Python自学,Python爬虫,Django博客,Python web开发,个人博客
IZONE_GITHUB=https://github.com/zhangmoumou1
# MySQL配置
IZONE_MYSQL_HOST=117.0.0.1
IZONE_MYSQL_NAME=izone
IZONE_MYSQL_USER=root
IZONE_MYSQL_PASSWORD=password
IZONE_MYSQL_PORT=3306
# Redis配置
IZONE_REDIS_HOST=117.0.0.1
IZONE_REDIS_PASSWORD=password
IZONE_REDIS_PORT=6379
修改db/my.conf配置文件
此为mysql数据库的配置文件
[mysqld]
explicit_defaults_for_timestamp=true
character-set-server=utf8
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8;'
bind-address=0.0.0.0
max_allowed_packet=10M
wait_timeout=288000
interactive_timeout = 288000
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
skip-name-resolve
修改nginx/conf.d/default.conf
下列文件中的server name更换成自己的域名或者ip,记得服务器放通端口
erver {
# 端口和域名
listen 80;
server_name www.zhangyanc.club;
# static 和 media 的地址
location /static/ {
root /opt/izone;
}
location /media/ {
root /opt/izone;
}
# web 服务使用80端口,并且添加别名跟本地域名保持一致
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 其他配置
client_max_body_size 1m;
client_header_buffer_size 128k;
client_body_buffer_size 1m;
proxy_buffer_size 32k;
proxy_buffers 64 32k;
proxy_busy_buffers_size 1m;
proxy_temp_file_write_size 512k;
}
现在镜像和docker配置都搞好了,接下来开始部署项目,并完成初始化数据和数据迁移工作
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:http://zhangyanc.club/article/docker_image/
许可协议:署名-非商业性使用 4.0 国际许可协议