网站使用docker管理apache+php+mysql+letsencrypt

将服务器升级到Centos7.4后重新架构了一下网站框架,原来直接在服务器上安装apache+php+mysql+letsencrypt,现在全部换成使用docker来管理和搭建,现在的网站架构如下图:

QQ20180112-1.png

为此自己写了2个docker镜像:

  1. apache+php: https://hub.docker.com/r/hegoku/apache-php7

  2. letsencrypt: https://hub.docker.com/r/hegoku/letsencrypt

而mysql的镜像则用的是官方的:https://hub.docker.com/_/mysql

在学习生成docker镜像的过程中遇到了如下几个问题:

  1. Dockerfile生成的镜像比用commit生成的镜像大,因为docker会为一个 RUN 命令生成一层,解决方法是将所有的 RUN 命令写在一个RUN里

  2. 可以活用 --rm 参数,该参数是让容器在运行完后直接删除

  3. commit 命令的 --change 参数可以添加Dockerfile里的那些命令

  4. -v 参数,即使容器里的目录不存在也可以绑定

  5. ENTRYPOINT 命令的用法,常用于将镜像当做一个命令行来使用,letsencrypt镜像就是使用该命令包装了 certbot-auto

  6. apache+php 容器访问 mysql 容器使用 --link mysql:db 来连接,这样php访问数据库时填的数据库服务器地址为 'DB_HOST=db'
标签: docker