使用 Docker Compose 啟動指定服務
要在 Docker Compose 中啟動特定的服務而不是所有服務,可以使用以下命令:
docker compose up [服務名]
基本用法
-
啟動單個服務:
docker compose up service_name
-
啟動多個指定服務:
docker compose up service1 service2
-
在后臺運行( detached 模式):
docker compose up -d service_name
常用選項
-
-d
?或?--detach
:在后臺運行容器 -
--no-deps
:不啟動依賴的服務 -
--build
:在啟動前重新構建鏡像 -
--force-recreate
:強制重新創建容器
示例
假設你的?docker-compose.yml
?文件包含以下服務:
services:web:image: nginxdb:image: postgresredis:image: redis
要僅啟動 web 服務:
docker compose up web
要啟動 web 和 redis 服務但不啟動 db:
docker compose up web redis
要在后臺啟動 web 服務:
docker compose up -d web
注意事項
-
如果指定的服務依賴于其他服務,Docker Compose 會自動啟動這些依賴項(除非使用?
--no-deps
?選項) -
使用?
docker compose ps
?可以查看當前運行的服務狀態 -
使用?
docker compose logs [服務名]
?可以查看特定服務的日志
流程概覽
在開始之前,我們先來了解一下整個流程,如下表所示:
步驟 | 描述 |
步驟1 | 編寫 docker-compose.yml 文件 |
步驟2 | 啟動 docker compose |
步驟3 | 使用指定的 service 啟動容器 |
接下來,我們將逐步介紹每個步驟以及需要執行的操作。
步驟1:編寫 docker-compose.yml 文件
首先,我們需要編寫一個 docker-compose.yml 文件,該文件用于定義我們要啟動的容器服務。以下是一個示例的 docker-compose.yml 文件:
version: '3.8'services:web:build:context: .dockerfile: Dockerfileports:- 8000:8000command: python manage.py runserver 0.0.0.0:8000db:image: postgresenvironment:POSTGRES_USER: myuserPOSTGRES_PASSWORD: mypasswordPOSTGRES_DB: mydb
上述示例中定義了兩個服務,web 和 db。web 服務使用了一個自定義的 Dockerfile 進行構建,并將容器的 8000 端口映射到主機的 8000 端口。db 服務使用了官方提供的 PostgreSQL 鏡像,并設置了一些環境變量。
你可以根據實際情況修改這個文件,添加更多的服務或者調整服務的配置。
步驟2:啟動 docker compose
當我們編寫好 docker-compose.yml 文件后,我們可以使用以下命令啟動 docker compose:
docker compose up
這個命令會啟動所有在 docker-compose.yml 文件中定義的服務,并將它們作為容器運行起來。你可以在終端中觀察到容器的輸出日志。
如果你希望在后臺運行容器,可以使用 -d 參數:
docker compose up -d
步驟3:啟動指定的 service
要啟動特定的服務,我們可以使用以下命令:
docker compose up <service-name>
其中 <service-name> 是在 docker-compose.yml 文件中定義的服務名稱。
例如,如果我們只想啟動 web 服務,可以執行以下命令:
docker compose up web
這個命令將只啟動 web 服務,并將其作為容器運行起來。你可以在終端中觀察到該容器的輸出日志。
結論
通過以上步驟,你已經學會了如何使用 docker compose 啟動指定的 service。首先,你需要編寫一個 docker-compose.yml 文件來定義服務。然后,你可以使用 docker compose up 命令來啟動所有服務,或者使用 docker compose up <service-name> 命令來啟動特定的服務。
參考:docker-compose 啟動指定的service_mob649e815b1a71的技術博客_51CTO博客