Docker-compose发布应用及更新应用
1:环境
Docker版本:20.10.12
服务器:CentOS 7.9
Docker-compose版本:v2.2.3
2:所需镜像
原始镜像:
nginx:latest
redis:latest
替换镜像
nginx:alpine
redis:alpine
3:配置并启动测试服务
[root@virtual_host service]# ls
service.yml
[root@virtual_host service]# ls -a
. .. .env service.yml
[root@virtual_host service]# cat .env
nginx=alpine
redis=alpine
[root@virtual_host service]# cat service.yml
version: '3.5'
services:
nginx:
restart: always
image: nginx:${nginx} # 这里会去同目录下.env获取变量值
ports:
- 80:80
redis:
restart: always
image: redis:${redis} # 同上
ports:
- 6379:6379
[root@virtual_host service]# docker-compose -f service.yml up -d
[+] Running 3/3
⠿ Network service_default Created 0.0s
⠿ Container service-redis-1 Started 0.8s
⠿ Container service-nginx-1 Started 0.7s
[root@virtual_host service]# docker-compose -f service.yml ps
NAME COMMAND SERVICE STATUS PORTS
service-nginx-1 "/docker-entrypoint.…" nginx running 0.0.0.0:80->80/tcp, :::80->80/tcp
service-redis-1 "docker-entrypoint.s…" redis running 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
# 已启动
# 测试nginx
[root@virtual_host service]# curl 127.0.0.1 -I
HTTP/1.1 200 OK
Server: nginx/1.21.6
Date: Tue, 28 Dec 2021 05:20:10 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 25 Jan 2022 15:26:06 GMT
Connection: keep-alive
ETag: "61f0168e-267"
Accept-Ranges: bytes
# 测试redis
[root@virtual_host service]# redis-cli
127.0.0.1:6379>
4:替换镜像重新启动服务
# 更改变量名tag然后up -d即可
[root@virtual_host service]# cat .env
nginx=latest
redis=latest
[root@virtual_host service]# docker-compose -f service.yml up -d
[+] Running 2/2
⠿ Container service-redis-1 Started 0.7s
⠿ Container service-nginx-1 Started 0.7s
[root@virtual_host service]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c91b7e59b92 redis:latest "docker-entrypoint.s…" 59 seconds ago Up 58 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp service-redis-1
e2a11bd72d1a nginx:latest "/docker-entrypoint.…" 59 seconds ago Up 58 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp service-nginx-1
# 看到镜像已经换成了 latest
# 我们可以使用 watch来实时查看 docker ps
Every 2.0s: docker ps Tue Dec 28 00:26:15 2021
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c826358b0648 redis:alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp service-
redis-1
b506637e4794 nginx:alpine "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp service-
nginx-1
# 更改其中一个服务的镜像其他的服务也是不影响的
Every 2.0s: docker ps Tue Dec 28 00:27:08 2021
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32a3fae3eb4a nginx:latest "/docker-entrypoint.…" 18 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp servic
e-nginx-1
c826358b0648 redis:alpine "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp servic
e-redis-1