docker django mysql_使用docker-compose编排django、mysql实战

本文介绍了如何在Centos7系统上使用Docker和Docker Compose部署Django项目,详细阐述了Docker的安装、Dockerfile与docker-compose.yml文件的编写、项目的设置调整,以及项目启动和容器管理。但在实践中遇到首次运行需手动执行数据库迁移和创建超级用户的问题,需要后续解决。
摘要由CSDN通过智能技术生成

背景:

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

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

系统环境:Centos7

一、docker安装

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

yumremove 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

检查结果如下:

f4511b23da94e8c94d9f0967c9c27e83.png

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文件

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

869f2f45f6f4024b9e73804a60ea922b.png

编写好的Dockerfile文件如下:

FROM python:3.6.4ENV PYTHONUMBUFFERED1RUNmkdir /leartd

RUNmkdir /leartd/dockermysql

WORKDIR/leartd

ADD requirements.txt/leartd/RUN pipinstall -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=0expose:- "3306"volumes:- ./dockermysql:/var/lib/mysql:rw

environment:- MYSQL_DATABASE=demodb- MYSQL_ROOT_PASSWORD=123456web:

build: .

command: python manage.py runserver0.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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值