compose部署Django与MySQL实战

本萌最近在部署自己开发的项目的时候发现同一套代码上传到服务器上后,部分功能莫名其妙的有点问题,服务器的各项配置都没有做过变动,所以想把项目转战到docker。

奈何刚接触docker,很多地方都不懂,在这个坑里面折腾了一两天。决定对本次实践做个过程总结希望少点人走弯路。

系统环境:CentOS 7

一、docker安装

1、以root用户登录(使用sudo命令也行,本人懒,不想敲那么多字符),删除旧版本的docker;

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2、如果以前安装过docker的,需要先删除以前的docker文件;

rm -rfv /var/lib/docker/

3、安装docker-ce(最新的系统可以不需要执行,本人为了保险起见执行了 ^0^);

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

4、下载docker-ce的yum源配置文件;

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

5、安装docker-ce;

yum install docker-ce

6、设置docker-ce随系统启动;

systemctl enable docker

7、启动docker;

systemctl start docker

8、验证docker是否安装成功;

docker -v

检查结果如下:

compose部署Django与MySQL实战

9、安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

二、编写项目dockerfile文件

在动手写之前,先看下项目结构:

compose部署Django与MySQL实战

编写好的Dockerfile文件如下:

FROM Python:3.6.4
ENV PYTHONUMBUFFERED 1
RUN mkdir /leartd
RUN mkdir /leartd/dockermysql
WORKDIR /leartd
ADD requirements.txt /leartd/
RUN pip install -r requirements.txt
ADD . /leartd/

三、编写docker-compose.yml文件

version: '3'
services:
        db:
                image: mysql
                restart: always
                command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES utf8mb4;' --innodb-flush-log-at-trx-commit=0
                expose:
                        - "3306"
                volumes:
                        - ./dockermysql:/var/lib/mysql:rw
                environment:
                        - MYSQL_DATABASE=demodb
                        - MYSQL_ROOT_PASSWORD=123456
        web:
                build: .
                command: python manage.py runserver 0.0.0.0:9000 --insecure
                volumes:
                        - .:/leartd
                ports:
                        - "8080:9000"
                depends_on:
                        - db

command:执行的命令内容是为了给mysql指定字符编码,不指定时,默认使用的是lanti1编码,在使用中文字符的时候会乱码

四、修改项目settings.py文件配置

修改地方有两个,

1、

ALLOWED_HOSTS = ['*', ]

2、

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0b43937955d8256221da6d63c557424f.html