背景:

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

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

系统环境:Centos7

一、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

检查结果如下:

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

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

编写好的Dockerfile文件如下:

FROM python:3.6.
ENV PYTHONUMBUFFERED
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: ''
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=
expose:
- ""
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: --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。

使用docker-compose编排django、mysql实战的更多相关文章

  1. 使用Docker compose编排Laravel应用

    前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...

  2. Docker(二十六)-Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  3. Docker系列之(五):使用Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  4. docker compose 编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...

  5. Docker Compose编排工具部署lnmp实践及理论(详细)

    目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...

  6. 基于Docker Compose构建的MySQL MHA集群

    Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于My ...

  7. 使用Docker Compose编排Spring Cloud微服务

    文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...

  8. 使用docker compose编排容器

    一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...

  9. 使用Docker Compose编排微服务

    一般微服务架构会包含若干个微服务,而每个微服务可以有多个实例,如果每个微服务都有手动启停,那么效率就很低.维护量比较大. 所以我们可以使用Docker Compose来轻松.高效地管理容器. 一.安装 ...

  10. asp.net core容器&mysql容器network互联 & docker compose方式编排启动多个容器

    文章简介 asp.net core webapi容器与Mysql容器互联(network方式) docker compose方式编排启动多个容器 asp.net core webapi容器与Mysql ...

随机推荐

  1. 1o xiaomi

    atom 取色器   div.contine  tab 补齐

  2. day1 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 2490: illegal multibyte sequence 错误提示

    get方式得到网页的信息 #coding=utf-8 #pip install requests #直接get到网页的信息 import requests from bs4 import Beauti ...

  3. android prgoressBar setProgressDrawable 在4.0系统式正常,在2.3系统上不能正常使用的问题

    上次在做一个电池电量的进度显示时,需要根据背景主题色来切换电池电量的进度的颜色, 但是在对prgoressBar的setProgressDrawable进行设置之后发现,在4.0系统上能够正常,而在2 ...

  4. pycharm如何回到过去某个时间

    在编写代码是,我们可能会写错代码,或者是误删某个文件,那么问题来了,如何回到过去的某个时间段,来弥补我们犯下的错呢? 1.如果是恢复删除的文件则右击之前文件所在的文件夹 2.右击文件夹的显示效果如图 ...

  5. sqlmap简单中文说明

    首先下载需要的文件,如果是windows环境直接到http://sqlmap.org/下载安装所需要的文件即可. 更新 svn checkout https://svn.sqlmap.org/sqlm ...

  6. Appium安卓与环境配置

    下载与安装: Appium-desktop项目地址:https://github.com/appium/appium-desktop 下载地址:https://github.com/appium/ap ...

  7. 【转】Linux系统下的ssh使用

    Linux系统下的ssh使用(依据个人经验总结)   对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使 ...

  8. Siki_Unity_4-4_丛林战争_Socket/TCP网络游戏开发

    Unity 4-4 丛林战争(Socket/TCP网络游戏开发) 任务1:素材.演示.Prerequisite 使用c#的有关TCP的底层API进行服务器端的开发(直接通过socket进行通信) 功能 ...

  9. AssociatedObject关联对象原理实现

    介绍 关联对象(AssociatedObject)是Objective-C 2.0运行时的一个特性,允许开发者对已经存在的类在扩展中添加自定义的属性.在实际生产过程中,比较常用的方式是给分类(Cate ...

  10. Codeforces Round #524 (Div. 2) C. Masha and two friends(矩形相交)

    C. Masha and two friends time limit per test 1 second memory limit per test 256 megabytes input stan ...