一般的項(xiàng)目都不只用到一個(gè)應(yīng)用,當(dāng)項(xiàng)目中有多個(gè)應(yīng)用需要被部署,并且之間還存在關(guān)系時(shí),一個(gè)個(gè)去部署非常麻煩,所以需要使用docker compose來(lái)進(jìn)行統(tǒng)一編排部署。
本文包含:
- Linux下載安裝docker compose
- 編寫(xiě)docker-compose.yml文件
- docker-compose常用命令
Linux下載安裝docker compose
下載docker-compose文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
添加可執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
檢查是否成功安裝
docker-compose --version
編寫(xiě)docker-compose.yml文件
編寫(xiě)docker-compose文件不難,可以簡(jiǎn)單看做是寫(xiě)一個(gè)python格式的配置文件。本篇文章不寫(xiě)大而全的內(nèi)容,更多的參數(shù)可以查看https://www.cnblogs.com/wutao666/p/11332186.html
version: "3.0"
services:
# 服務(wù)名稱(chēng)
nginx:
#鏡像名稱(chēng)
image: nginx
#啟動(dòng)后的容器名稱(chēng)
container_name: nginx
#映射宿主機(jī)和容器端口
ports:
#80
- 80:80
#ssl默認(rèn)端口
- 443:443
#test1端口
- 8088:8088
#test2端口
- 8089:8089
#設(shè)置數(shù)據(jù)卷用于配置
volumes:
- nginx-vol:/etc/nginx
# networks:
# smartvideo-bridge:
# aliases:
# - nginx
#鏈接test1,test2應(yīng)用,可以直接在nginx.conf使用作為地址
links:
- test1:test1
- test2:test2
#設(shè)置重新啟動(dòng)為always
restart: always
redis:
image: redis
container_name: redis
ports:
- 6379:6379
#命令配置redis密碼
command: redis-server --requirepass yourpassword
# networks:
# smartvideo-bridge:
# aliases:
# - redis
restart: always
mysql:
container_name: mysql
image: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- mysql-data-vol:/var/lib/mysql
- mysql-conf-vol:/etc/mysql/conf.d
# networks:
# smartvideo-bridge:
# aliases:
# - mysql
# links:
# - test1
restart: always
test1:
image: alexwillbegood/test1
container_name: test1
links:
- mysql:mysql
- redis:redis
volumes:
- test1-vol:/usr/share/nginx/html
# networks:
# smartvideo-bridge:
# aliases:
# - test1
restart: always
test2:
image: alexwillbegood/test2
container_name: test2
links:
- mysql:mysql
- redis:redis
volumes:
- test2-vol:/usr/share/nginx/html
# networks:
# smartvideo-bridge:
# aliases:
# - test2
restart: always
#數(shù)據(jù)卷
volumes:
nginx-vol:
mysql-data-vol:
mysql-config-vol:
test1-vol:
test2-vol:
# networks:
# smartvideo-bridge:
docker-compose常用命令
docker-compose pull #拉取文件中涉及的所有鏡像,通常情況下,會(huì)使用 -d 參數(shù)令應(yīng)用在后臺(tái)啟動(dòng)
docker-compose up #用于部署一個(gè) Compose 應(yīng)用
docker-compose stop #停止 Compose 應(yīng)用相關(guān)的所有容器,但不會(huì)刪除它們
docker-compose down #停止并刪除運(yùn)行中的 Compose 應(yīng)用
docker-compose rm #用于刪除已停止的 Compose 應(yīng)用。它會(huì)刪除容器和網(wǎng)絡(luò),但是不會(huì)刪除卷和鏡像。
docker-compose restart #重啟已停止的 Compose 應(yīng)用
docker-compose ps #用于列出 Compose 應(yīng)用中的各個(gè)容器。