WEB 项目是仅把 LAMP 运行环境放入 Docker,还是连同代码一起放入 Docker?

2018-11-28 15:48:52 +08:00
 nikoo
如果仅放运行环境,更新代码是要进入 Docker 容器手动更新?
如果全部放入 Docker,意味着每次更新需要暂时中断服务?(因为要更新 /重启容器)
3239 次点击
所在节点    Docker
8 条回复
swulling
2018-11-28 15:56:05 +08:00
创建两个或者多个容器,依次升级即可
yuikns
2018-11-28 15:57:30 +08:00
1. docker-compose 组织多个容器
2. 不是,recreate 是先启动另一个顶掉之前那个
nikoo
2018-11-28 16:00:25 +08:00
@swulling @yuikns 谢谢,是想问合理的做法应为仅运行环境还是连代码一起放进去。
Seanfuck
2018-11-28 16:00:51 +08:00
貌似需要 3 个容器;代码是映射过去?
alex321
2018-11-28 16:01:44 +08:00
最近刚好在学习这个,建议后者。
如果要走前者,至少分开两套代码,用 -v 或者 docker-compose.yml 指派目录。更新的时候起新的环境 docker 和代码,Nginx 增加新 docker 服务 reload,移除停旧版。
yuikns
2018-11-28 17:13:54 +08:00
看情况。

比如我们是 go 写的。玩了提交到 git,然后 ci 收到 trigger 后开始 build image。然后直接 push 到线上。因为有编译过程,并且顺便加以测试,那么对我而言最方便的方法就是写个 dockerfile

FROM golang:1.11 as builder

COPY . /go/src/some/path

RUN build-scripts.sh
...
FROM scratch

COPY --from=builder /go/src/some/path/my-bin /my-bin

CMD ["/my-bin"]

然后丢 k8s 或者放哪里都很方便。

但是这会有一点延迟。

要是是纯 php,其实只需要容器加代码就好。

那么就把 php-fpm 事先 build 好基础环境,然后 docker-compose.yml 里面用 volumes 即可,如下:

version: '3'

services:
php:
image: php:7.2-apache
ports:
- 8088:80
volumes:
- ./local-src:/var/www/html
Vogan
2018-11-28 17:17:57 +08:00
你怎么更新能不中断服务,代码更新就没问题了吗,git pull ? 文件差异也是会短暂存在的。
不如 docker swarm,2 个以上的容器滚动更新,可以更优雅的解决。
herozzm
2018-11-28 17:28:25 +08:00
我是讲代码放在母鸡 然后共享给 php-fpm 和 nginx 共同使用更新貌似不存在什么问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX