docker-compose 重启/重建指定服务

编程教程 > Docker Case (8) 2025-10-16 12:44:08

场景说明

docker-compose项目,配置文件docker-compose.yml 配置了多个容器,如 mysql / spring / web

当前需要重构web,删除后再创建。

 

docker-compose 重建重启

普通重启

docker-compose start web

重建重启

# 1. 停止指定服务的容器
docker-compose stop 服务名
# 2. 删除该容器
docker-compose rm -f 服务名
# 3. 重新创建并启动
docker-compose up -d 服务名

docker高版本支持docker compose的可以用下面命令:

docker compose up --force-recreate --no-deps  -d web

各部分解释:

  1. docker compose up 这是 Docker Compose 的核心命令,用于启动并运行 docker-compose.yml 文件中定义的所有服务(容器)。它会自动处理服务之间的依赖关系。
  2. --force-recreate 强制重新创建容器,即使它们的配置和镜像没有改变。

    • 通常用于确保使用最新的配置、环境变量或挂载的文件。
    • 即使已有同名容器存在,也会被删除并新建。
  3. --no-deps 只启动指定的服务(这里是 web),不启动它的依赖服务
    • 在你的场景中,web 服务可能依赖于 mysqljava 服务(例如数据库连接)。
    • 使用此选项意味着:仅启动 web 容器,不会自动启动 mysqljava 容器
    • 注意:如果 web 需要这些依赖才能正常工作,它可能会因无法连接数据库或后端服务而报错或启动失败。
  4. -d 表示“detached mode”(后台运行模式)。容器会在后台运行,不会占用当前终端。
  5. web 指定要操作的服务名称。只会对 docker-compose.yml 中定义的名为 web 的服务执行操作。

重启后查看

ubuntu@VM-0-8-ubuntu:/opt/docker/xxx-website$ docker compose ps
WARN[0000] /opt/docker/backend/docker-compose.yml: `version` is obsolete 
NAME             IMAGE                 COMMAND                  SERVICE          CREATED              STATUS                            PORTS
mysql    mysql:8.0.36          "docker-entrypoint.s…"   mysql    2 minutes ago        Up 2 minutes (healthy)            33060/tcp, 0.0.0.0:23306->3306/tcp, :::23306->3306/tcp
web      node:20.19.5-alpine   "docker-entrypoint.s…"   web      4 seconds ago        Up 2 seconds (health: starting)   0.0.0.0:6081->3000/tcp, :::6081->3000/tcp
redis    redis:1.0     "docker-entrypoint.s…"   redis    2 minutes ago        Up 2 minutes (healthy)            6379/tcp
backend   openjdk:17            "java -Xms256M -Xmx2…"   backend   About a minute ago   Up About a minute (healthy)       0.0.0.0:6080->8080/tcp, :::6080->8080/tcp

可以观察到只有web容器时间变了,其他一致

整体含义:

根据 docker-compose.yml 文件中的定义,强制重新创建并启动名为 web 的服务容器,并在后台运行;但不启动其依赖的服务(如 mysql、java 等)。

实际应用场景举例:

假设你的 docker-compose.yml 结构如下:

services:
  mysql:
    image: mysql:8.0
    # ...
  redis:
    image: redis:last
    # ...
  backend:
    build: ./backend
    # ...
    depends_on:
      - mysql
      - redis
  web:
    image:node:last
    depends_on:
      - backend
    # ...

那么这条命令的效果是:

  • 忽略 depends_on 关系;
  • 不管 backend是否正在运行,都不会启动它们;
  • 只重建并启动 web 容器。

 

⚠️ 注意事项:

  • 如果 web 服务依赖 java API 或 mysql 数据库,而这些服务未运行,则 web 很可能无法正常工作。
  • 此命令适合用于单独更新前端应用,且确认后端/数据库服务已在运行的情况。
  • 若要同时启动所有依赖项,请去掉 --no-deps

    docker compose up --force-recreate -d web

常见用途总结:

场景 推荐命令
首次部署或完整启动 docker compose up -d
仅重启 web 服务(依赖已运行) docker compose up --force-recreate --no-deps -d web
更新 web 并连带启动依赖 docker compose up --force-recreate -d web


 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
场景说明docker-compose项目,配置文件docker-compose.yml 配置了多个容器,如 mysql / spring / web当前需要重构
docker compose 和 docker-compose 是用于定义和运行多容器 Docker 应用程序的工具,它们功能相似,但存在一些关键区别,主要体现
docker与docker-compose配置文件版本对应关系Compose file version 3 reference  Compose file formatDocker Engine...
docker-compose 报错:[root@VM_0_17_centos gateway]# docker-compose up Building gatewayServer unkno...
一. Docker-Compose 简介1. Docker-Compose 简介Docker-Compose项目是Docker官方的开源项目,负责实现对Dock
项目依赖说明Docker compose 示例docker-compose.yml 配置示例version: "3.8"networks: demoRouter
docker-compose.yml配置文件配置容器具体ip实现。注意配置具体ip必须知道所在网络的网段,错误配置无法使用,一般和自定义了子网段的网络配合使用。
部署目录结构tree -a ././├── conf.d #nginx 自定义配置映射目录│ ├── default.conf #存放一些通用配置(可选)│ ├
案例需求配置示例version: "3.8"networks: demoRouter:services: demo-mysql8: image: mysql:8
在执行多次docker-compose build 之后,我们通过命令`docker images`可以看到很多的REPOSITORY 为<none&gtl; 且tag 也是<non...
Docker安装部署Redisdocker 安装部署Redis环境Linux系统dockerdocker-compose 相关文章:Ubuntu 在线安装 Docker-xqlee (blog....
Dockerfile配置FROM php:7.4-apache#开源版依赖库安装RUN docker-php-ext-install pdo RUN docker-php-ext-install...
docker 常用命令整理(持续更新)docker运行容器资源相关查看所有运行docker的资源消耗情况docker stats查看指定运行容器资源消耗情况do
Docker从容器复制文件到主机sudo docker cp 容器名称/容器id:容器文件/目录 主机目录示例:sudo docker cp nginx:/et
旧域名:https://hub.docker.com 新域名:https://hubgw.docker.com/