本文首發於我的博客:地址php
Compose 是一個用戶定義和運行多個容器的 Docker 應用程序。在 Compose 中你可使用 YAML 文件來配置你的應用服務。而後,只須要一個簡單的命令,就能夠建立並啓動你配置的全部服務。nginx
使用 Compose 基本會有以下三步流程:git
目前有兩種主流安裝方式,筆者使用了第一種方式。github
下載最新的docker-compose文件web
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
複製代碼
下載完成後須要對/usr/local/bin/docker-compose
目錄進行賦權redis
chmod +x /usr/local/bin/docker-compose
複製代碼
測試結果docker
docker-compose --version
輸出
docker-compose version 1.16.1, build 6d1ac21
複製代碼
經過pip方式安裝shell
pip install docker-compose
複製代碼
前提是須要你的服務器已經裝了pip組件api
rm /usr/local/bin/docker-compose
複製代碼
pip uninstall docker-compose
複製代碼
咱們這裏以kafka爲例緩存
version: '2'
services:
zoo1:
# 依賴於wurstmeister/zookeeper鏡像,本地無則自動下載
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zoo1
# 映射端口
ports:
- "2181:2181"
# 容器名稱
container_name: zookeeper
kafka1:
# 依賴於wurstmeister/kafka鏡像
image: wurstmeister/kafka
# 映射端口
ports:
- "9092:9092"
# 目錄掛載 【容器目錄:宿主機目錄】
volumes:
- /var/log/kafka/logs:/var/docker/kafka/logs
# 配置環境變量
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
# 解決服務啓動順序問題,例以下面容器會先肯定zoo1和redis兩個服務,最後才啓動kafka1服務
depends_on:
- zoo1
- redis(實際無該容器)
# 容器名稱
container_name: kafka
複製代碼
首先將docker-compos.yml上傳至服務器,而後進入目錄執行:
docker-compose up -d
複製代碼
則開始後臺構建服務
若是想單獨啓動一個服務,你能夠:
docker-compose up -d 指定服務名稱
例子:docker-compose up -d zoo1
複製代碼
version: "3"
services:
# 指定服務名稱
#服務註冊與發現中心
simonEureka:
image: simon/eureka-server:2.0.1-SNAPSHOT
hostname: simonEureka
ports:
- "8100:8100"
#配置中心
simonConfig:
image: simon/config-server:2.0.1-SNAPSHOT
hostname: simonConfig
ports:
- "8101:8101"
depends_on:
- simonEureka
# always – 無論退出狀態碼是什麼始終重啓容器。當指定always時,docker daemon將無限次數地重啓容器。容器也會在daemon啓動時嘗試重啓,無論容器當時的狀態如何。
# no – 容器退出時不要自動重啓。這個是默認值。
# on-failure[:max-retries] – 只在容器以非0狀態碼退出時重啓。可選的,能夠退出docker daemon嘗試重啓容器的次數。
# unless-stopped - 無論退出狀態碼是什麼始終重啓容器,不過當daemon啓動時,若是容器以前已經爲中止狀態,不要嘗試啓動它。
restart: always
#路由網關
apigateway:
image: simon/apigateway:2.0.1-SNAPSHOT
ports:
- "8102:8102"
depends_on:
- simonEureka
- simonConfig
restart: always
#監控平臺
admin:
image: simon/admin:2.0.1-SNAPSHOT
ports:
- "8103:8103"
depends_on:
- simonEureka
- simonConfig
restart: always
---------------------
做者:AaronSimon
來源:CSDN
原文:https://blog.csdn.net/aaronsimon/article/details/82711610
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
複製代碼
這個時候咱們服務器simon目錄的文件應該以下:
apigateway:2.0.1-SNAPSHOT.jar
admin:2.0.1-SNAPSHOT.jar
config-server:2.0.1-SNAPSHOT.jar
eureka-server:2.0.1-SNAPSHOT.jar
docker-compose.yml
複製代碼
若是咱們的yml文件不是docker-compose.yml時咱們在進行服務排編是須要指定yml文件名稱。
docker-compose -f docker-kafka.yml up -d
複製代碼
當咱們遇到服務啓動須要前後順序時,咱們能夠對docker-compose.yml根據服務的前後順序進行拆分。
命令 | 描述 |
---|---|
docker-compose up -d nginx | 構建建啓動nignx容器 |
docker-compose exec nginx bash | 登陸到nginx容器中 |
docker-compose down | 刪除全部nginx容器,鏡像 |
docker-compose ps | 顯示全部容器 |
docker-compose restart nginx | 從新啓動nginx容器 |
docker-compose run --no-deps --rm php-fpm php -v | 在php-fpm中不啓動關聯容器,並容器執行php -v 執行完成後刪除容器 |
docker-compose build nginx | 構建鏡像 |
docker-compose build --no-cache nginx | 不帶緩存的構建 |
docker-compose logs nginx | 查看nginx的日誌 |
docker-compose logs -f nginx | 驗證(docker-compose.yml)文件配置,當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息 |
docker-compose pause nginx | 暫停nignx容器 |
docker-compose unpause nginx | 恢復ningx容器 |
docker-compose rm nginx | 刪除容器(刪除前必須關閉容器) |
docker-compose stop nginx | 中止nignx容器 |
docker-compose start nginx | 啓動nignx容器 |