1
swulling 2018-11-28 15:56:05 +08:00 via iPhone 1
创建两个或者多个容器,依次升级即可
|
2
yuikns 2018-11-28 15:57:30 +08:00 1
1. docker-compose 组织多个容器
2. 不是,recreate 是先启动另一个顶掉之前那个 |
4
Seanfuck 2018-11-28 16:00:51 +08:00
貌似需要 3 个容器;代码是映射过去?
|
5
alex321 2018-11-28 16:01:44 +08:00 1
最近刚好在学习这个,建议后者。
如果要走前者,至少分开两套代码,用 -v 或者 docker-compose.yml 指派目录。更新的时候起新的环境 docker 和代码,Nginx 增加新 docker 服务 reload,移除停旧版。 |
6
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 |
7
Vogan 2018-11-28 17:17:57 +08:00
你怎么更新能不中断服务,代码更新就没问题了吗,git pull ? 文件差异也是会短暂存在的。
不如 docker swarm,2 个以上的容器滚动更新,可以更优雅的解决。 |
8
herozzm 2018-11-28 17:28:25 +08:00 via iPhone
我是讲代码放在母鸡 然后共享给 php-fpm 和 nginx 共同使用更新貌似不存在什么问题
|