背景:python
本萌最近在部署本身开发的项目的时候发现同一套代码上传到服务器上后,部分功能莫名其妙的有点问题,服务器的各项配置都没有作过变更,因此想把项目转战到docker。mysql
奈何刚接触docker,不少地方都不懂,在这个坑里面折腾了一两天。决定对本次实践作个过程总结但愿少点人走弯路。linux
系统环境:Centos7git
1、docker安装github
一、以root用户登陆(使用sudo命令也行,本人懒,不想敲那么多字符),删除旧版本的docker;web
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
二、若是之前安装过docker的,须要先删除之前的docker文件;sql
rm -rfv /var/lib/docker/
三、安装docker-ce(最新的系统能够不须要执行,本人为了保险起见执行了 ^0^);docker
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
四、下载docker-ce的yum源配置文件;django
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
五、安装docker-ce;centos
yum install docker-ce
六、设置docker-ce随系统启动;
systemctl enable docker
七、启动docker;
systemctl start docker
八、验证docker是否安装成功;
docker -v
检查结果以下:
九、安装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
2、编写项目dockerfile文件
在动手写以前,先看下项目结构:
编写好的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/
3、编写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编码,在使用中文字符的时候会乱码
4、修改项目settings.py文件配置
修改地方有两个,
一、
ALLOWED_HOSTS = ['*', ]
二、
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文件第三行的内容
5、编译项目
docker-compose build
6、启动项目
docker-compose up
或
docker-compose up -d(后台运行)
在浏览器中输入localhost:8080就能够成功访问项目了
7、附录
一、查看当前docker容器中已有的image
docker image ls
二、查看全部的容器
docker ps -a
三、批量中止在运行中的容器
docker ps -a | grep 'Up' | awk '{print $1}'| xargs docker container stop
四、批量删除Exited状态的容器
docker ps -a | grep 'Exited' | awk '{print $1}'| xargs docker container rm
五、批量删除name为none的image
docker image ls | grep none | awk '{print $3}' | xargs docker image rm
8、未彻底解决的问题:
经过docker-compose up运行项目后,首次须要去web容器里面手动执行makemigrations、migrate、createsuperuser命令。
暂时不知道怎么处理,若有大神路过还望指点一二
9、须要后续处理的问题:
搭建私有registry,把镜像提交到私有的registry。