项目是 php-fpm + nginx
我第一次将 docker 用在生产环境,也是使用 jenkins 构建的。
我先说下我的流程 jenkins
1.在 jenkins 执行 shell 2.docker build -t php-fpm:v1 . docker build -t nginx:v1 . 3.推送到私有仓库。docker push 4.jenkins 发送 docker-compse.yml 到远程服务器( service 里面的 image 使用的是最新版本的 image ) 5.远程执行 docker-compose up -d
现在遇到下面几个问题 1.由于 php-fpm+nginx 是两个容器需要打两个 Image 是否有办法打包一个容器?(除了共用容器) 2.由于是打包的镜像,没有挂载磁盘,日志问题怎么解决的( graylog,elk?) 3.以上是否是正常的实现流程,有没有更好的流程?
1
yanaraika 2019-03-08 10:45:45 +08:00 3
1. 正确做法就是两个容器。每个容器只干一件事情
2. docker 有 log driver,可以接 rsyslog/logstash 3. nginx 用官方镜像,配置文件单独拿出来,同时发送配置文件 + docker-compose.yml 到远程服务器,在 docker-compose 里面用 volume 挂进去 4. build 的 tag 不要用一样的 pho-fpm:v1,使用 my-project-php:commit_hash 或者 git tag 作为标记,每次不一样 |
2
hiboshi OP @yanaraika 好的非常感谢。
您说的第二点我没有看的太明白,你的意思是 volume 挂载 nginx_vhost.conf 配置文件还是 nginx 容器和 php-fpm 容器里面的项目挂载? 目前我的做的是 php-fpm+nginx 打包两个镜像 每次更新都是两个。nginx 配置文件我是 build 的时候 copy 过去的,nginx 我也是用的官方的镜像。谢谢。 |
4
yanaraika 2019-03-08 11:07:41 +08:00
@hiboshi
项目是否打包到容器里没有公认的标准,一般我这边的做法是需要从官方镜像安装依赖的(例如 php 容器)把代码拷贝进去。对于挂进去就能用的(例如 nginx )容器直接用官方镜像,把静态文件和 vhost.conf 都通过 volume 挂进去。 |
5
fxxkgw 2019-03-08 11:37:36 +08:00
借楼问一下 实践上有什么减少镜像大小的方法呢 感觉随便加点东西就多了好几百 M
操作中也尽量把 RUN 的操作用 && 连接了 yum 操作也 clean all 了 但是效果还是不明显 |