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 国际许可协议