阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7下使用docker-compose部署Django与MySQL实战

158次阅读
没有评论

共计 2833 个字符,预计需要花费 8 分钟才能阅读完成。

背景:

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

检查结果如下:

CentOS 7 下使用 docker-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 文件

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

CentOS 7 下使用 docker-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、

DATABASES = {
    ‘default’: {
        ‘ENGINE’: ‘django.db.backends.mysql’,
        ‘NAME’: ‘demodb’,
        ‘USER’: ‘root’,
        ‘PASSWORD’: ‘123456’,
’HOST’: ‘db’,
    }
}

这里的 NAME 就是 docker-compose.yml 文件中的 MYSQL_DATABASE,PASSWORD 为 docker-compose.yml 文件中的 MYSQL_ROOT_PASSWORD,HOST 为 docker-compose.yml 文件第三行的内容

五、编译项目

docker-compose build

六、启动项目

docker-compose up

docker-compose up -d(后台运行)

在浏览器中输入 localhost:8080 就可以成功访问项目了

七、附录

1、查看当前 docker 容器中已有的 image

docker image ls

2、查看所有的容器

docker ps -a

3、批量停止在运行中的容器

docker ps -a | grep ‘Up’ | awk ‘{print $1}’| xargs docker container stop

4、批量删除 Exited 状态的容器

docker ps -a | grep ‘Exited’ | awk ‘{print $1}’| xargs docker container rm

5、批量删除 name 为 none 的 image

docker image ls | grep none | awk ‘{print $3}’ | xargs docker image rm

八、未完全解决的问题:

通过 docker-compose up 运行项目后,首次需要去 web 容器里面手动执行 makemigrations、migrate、createsuperuser 命令。

暂时不知道怎么处理,如有大神路过还望指点一二

九、需要后续处理的问题:

搭建私有 registry,把镜像提交到私有的 registry。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2833字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中