docker compose 怎么单独执行某一部分的命令?

我现在docker-compose的yml大概是这样的:

version: "3.9"
services:
  server-pc:
    container_name: test-server-pc
    image: "test-server-pc:2.4.2"
    environment:
      - TZ=Asia/Shanghai
    restart: always
    networks:
      - 'cnit-net-main'
    ports:
      - '8080:8080'
    volumes:
      - "/cnit-serv/test/server-pc/apl-log:/apl-log"
      - "/cnit-serv/test/server-pc/apl-configs:/apl-configs"
      - "/cnit-serv/test/server-pc/apl-wx-pay-cert:/apl-wx-pay-cert"
      - "/cnit-serv/test/server-pc/apl-public:/apl-public"
      - "/cnit-serv/test/server-pc/apl-static:/apl-static"
      - "/cnit-serv/test/server-pc/apl-ftl-templates:/apl-ftl-templates"
      - "/cnit-serv/test/server-pc/apl-upload:/apl-upload"
      - "/cnit-serv/test/server-pc/apl-webapp:/apl-webapp"
    privileged: true
  nginx:
    container_name: cnit-nginx
    image: "nginx"
    environment:
      - TZ=Asia/Shanghai
    restart: always
    networks:
      - 'cnit-net-main'
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - "/cnit-serv/nginx/www/html:/usr/share/nginx/html"
      - "/cnit-serv/nginx/config/certs/:/etc/nginx/certs"
      - "/cnit-serv/nginx/config/nginx.conf:/etc/nginx/nginx.conf"
      - "/cnit-serv/nginx/config/conf.d:/etc/nginx/conf.d"
      - "/cnit-serv/nginx/logs:/var/log/nginx"
      - "/cnit-serv/test/front-pc/ver-2-4-2/dist:/srv/test/pc-admin"
      - "/cnit-serv/test/front-hp:/srv/test/www"
    privileged: true
    depends_on:
      - "server-pc"
networks:
  cnit-net-main:
    external: true

简单来说呢,就是启动一个后台服务和一个前台服务。
我正常重启的流程是,发布新的代码后,修改test-server-pc:2.4.2front-pc/ver-2-4-2的版本号,之后停止服务,重新启动。
重新启动的命令是:

cd /cnit-serv/test/docker-compose/
docker compose down
docker compose up -d

那我现在有一个问题就是,我只改了前台,我的后台并没有改动,所以我只想把前台从/cnit-serv/test/front-pc/ver-2-4-2/dist:/srv/test/pc-admin变成/cnit-serv/test/front-pc/ver-2-4-3/dist:/srv/test/pc-admin
那我该怎么在不停止后台服务的情况下,重启前台呢?

阅读 1.6k
2 个回答

当然,看语法介绍

docker compose up [OPTIONS] [SERVICE...]

docker compose down [OPTIONS] [SERVICES]

传完选项后,把服务名字传在后面即可。

version: "3"

services:
  helloworld:
    image: bash:latest
    restart: 'no'
    command:
      - echo
      - 'hello world'
    profiles: ['hello']
  goodbyeworld:
    image: bash:latest
    restart: 'no'
    command:
      - echo
      - 'goodbye world'
    profiles: ['goodbye']

profile:

直接用具体的服务名:


以下为原文字答案

up / down / stop 等都可以跟具体的服务名作为参数:

docker-compose up -d nginx
docker-compose down nginx

等等等。

然后 docker compose 还有一个特性是 profile,你可以在具体的服务下面用 profiles 指定所属的 profile:

services:
  nginx:
    XXXXX
    profiles: ['server']
# 使用姿势(之一)
docker-compose --profile server up -d

更多详细可以阅读官网文档的相关部分:

https://docs.docker.com/compose/profiles/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏