?本文由作者:蛮大人 授权发布
链接:https://opsdev.fun/2017/07/17/O1-8-02-Docker%E6%90%AD%E5%BB%BADjango-Mariadb%E7%8E%AF%E5%A2%83/
著作权归作者所有。
转载请联系作者获得授权。
阅读建议
先通读全文后,再自行决定需要实践的步骤。后文总是有更简洁更快更好的实践。
不过,新人建议从头到尾实践,也不失为“笨办法学 Docker” 的美谈一桩。
本文思路:
直接拉取Mariadb镜像,搭建数据库
手动Build Django镜像:以python2.7为基础镜像让我们做的更好:以Python2.7-slim为基础镜像的优化"docker -v"&&"docker --link"
源码:git@github.com:AnInputForce/autodepopy.git
基本上是边学边实验,关键步骤都有 commit。请各位参考。
正文
环境之 “Docker-Mariadb” 搭建
参考:在 Mac 中直接安装 Maridb(不推荐),Mac中MariaDB数据库的安装步骤
首先,把你的宿主机 mac 或 linux 装上 tree 命令。没有也没关系,下文有相关的换成 ls 即可;
下载 Mariadb 数据库镜像
docker pull mariadb
启动并配置 DB
- 映射数据库数据文件和配置文件
- 新建 ~/mariadb/data 、~/mariadb/custom 目录
- -v ~/mariadb/data:/var/lib/mysql 映射数据文件出来
- -v ~/mariadb/custom:/etc/mysql/conf.d 映射配置文件出来
- 指定数据库编码 utf8mb4,参考:mysql 使用 utf8mb4 经验吐血总结
$ mkdir -p ~/mariadb/data ~/mariadb/custom
$ docker run --name my-mariadb -v ~/mariadb/data:/var/lib/mysql -v ~/mariadb/custom:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1q2w -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
测试验证
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77de3a6bf3fe mariadb:latest "docker-entrypoint..." 2 minutes ago Up About a minute 0.0.0.0:3306->3306/tcp my-mariadb
$ docker exec -it my-mariadb bash
root@77de3a6bf3fe:/# mysql -uroot -p1q2w
Welcome to the MariaDB monitor. Commands end with ; or \g.
....
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.02 sec)
环境之“Docker-Django”搭建
很意外,翻了翻官方 hub 镜像,有如下提示:
This image is officially deprecated in favor of the standard
python
image;
大致意思是:这个镜像已被标准 python 镜像取代。该镜像不能直接带来 Django 环境,仅有的价值是提供一些 Django 依赖如mysql-client 等。或许因为 Django 是 APP 级的,依赖于 Projec t的 requirements.txt,like this:
只能自己动手,丰衣足食了。正好练练刚学习到的知识。
准备项目目录
- workspace 工作空间,所有项目大本营:自己习惯
- autodeploy 自动部署项目的目录:自己习惯
- z-dev 存放开发环境 dockerfile 及相关信息:自己习惯
- z-pub 存放生产环境 dockerfile 及相关信息:自己习惯
- .dockerignore 存放不被镜像 build 时关注的文件:来自 Vscode。linux下不可见,具体内容详见此项目 github;
$ mkdir -p ~/workspace/autodeploy && cd ~/workspace/autodeploy && mkdir z-dev z-pub
创建 Dockerfile
直接使用 Python2.7 基础镜像,简单粗暴省事,适合想快速体验的孩子:
# 基础镜像
FROM python:2.7
# 维护者信息
MAINTAINER kang.cunhua <kangcunhua@git.com.cn>
# app 所在目录
WORKDIR /usr/local/web
ADD . /usr/local/web/
# 安装 app 所需依赖
RUN pip install --no-cache-dir -r requirements.txt
创建 requirements.txt
Django==1.11.3
MySQL-python
宿主机当前目录结构
ChinaDreams:autodeploy kangcunhua$ tree
.
├── readme.md
├── z-dev
│ ├── Dockerfile
│ └── requirements.txt
└── z-pub└── Dockerfile2 directories, 4 files
Build 镜像
当前目录:~\workspace\autodeploy
cd z-dev && docker build -t mydjango:late