网站使用docker管理apache+php+mysql+letsencrypt
将服务器升级到Centos7.4后重新架构了一下网站框架,原来直接在服务器上安装apache+php+mysql+letsencrypt,现在全部换成使用docker来管理和搭建,现在的网站架构如下图:
为此自己写了2个docker镜像:
-
apache+php: https://hub.docker.com/r/hegoku/apache-php7
- letsencrypt: https://hub.docker.com/r/hegoku/letsencrypt
而mysql的镜像则用的是官方的:https://hub.docker.com/_/mysql
在学习生成docker镜像的过程中遇到了如下几个问题:
-
Dockerfile生成的镜像比用commit生成的镜像大,因为docker会为一个
RUN
命令生成一层,解决方法是将所有的RUN
命令写在一个RUN里 -
可以活用
--rm
参数,该参数是让容器在运行完后直接删除 -
commit
命令的--change
参数可以添加Dockerfile里的那些命令 -
-v
参数,即使容器里的目录不存在也可以绑定 -
ENTRYPOINT
命令的用法,常用于将镜像当做一个命令行来使用,letsencrypt镜像就是使用该命令包装了certbot-auto
apache+php
容器访问mysql
容器使用--link mysql:db
来连接,这样php访问数据库时填的数据库服务器地址为 'DB_HOST=db'
值得借鉴