原創: 夢想de星空 macrozheng 6月19日html
Docker Compose是一個用於定義和運行多個docker容器應用的工具。使用Compose你能夠用YAML文件來配置你的應用服務,而後使用一個命令,你就能夠部署你配置的全部服務了。mysql
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
指定運行的鏡像名稱sql
# 運行的是mysql5.7的鏡像image: mysql:5.7
配置容器名稱docker
# 容器名稱爲mysqlcontainer_name: mysql
指定宿主機和容器的端口映射(HOST:CONTAINER)數據庫
# 將宿主機的3306端口映射到容器的3306端口ports: - 3306:3306
將宿主機的文件或目錄掛載到容器中(HOST:CONTAINER)服務器
# 將外部文件掛載到myql容器中volumes: - /mydata/mysql/log:/var/log/mysql - /mydata/mysql/data:/var/lib/mysql - /mydata/mysql/conf:/etc/mysql
配置環境變量app
# 設置mysqlroot賬號密碼的環境變量environment: - MYSQL_ROOT_PASSWORD=root
鏈接其餘容器的服務(SERVICE:ALIAS)curl
# 能夠以database爲域名訪問服務名稱爲db的容器links: - db:database
# -d表示在後臺運行docker-compose up -d
docker-compose stop
docker-compose ps
Docker Compose將所管理的容器分爲三層,工程、服務及容器。docker-compose.yml中定義全部服務組成了一個工程,services節點下即爲服務,服務之下爲容器。容器與容器直之間能夠以服務名稱爲域名進行訪問,好比在mall-tiny-docker-compose服務中能夠經過jdbc:mysql://db:3306這個地址來訪問db這個mysql服務。maven
version: '3'services: # 指定服務名稱 db: # 指定服務使用的鏡像 image: mysql:5.7 # 指定容器名稱 container_name: mysql # 指定服務運行的端口 ports: - 3306:3306 # 指定容器中須要掛載的文件 volumes: - /mydata/mysql/log:/var/log/mysql - /mydata/mysql/data:/var/lib/mysql - /mydata/mysql/conf:/etc/mysql # 指定容器的環境變量 environment: - MYSQL_ROOT_PASSWORD=root # 指定服務名稱 mall-tiny-docker-compose: # 指定服務使用的鏡像 image: mall-tiny/mall-tiny-docker-compose:0.0.1-SNAPSHOT # 指定容器名稱 container_name: mall-tiny-docker-compose # 指定服務運行的端口 ports: - 8080:8080 # 指定容器中須要掛載的文件 volumes: - /etc/localtime:/etc/localtime - /mydata/app/mall-tiny-docker-compose/logs:/var/logs
注意:若是遇到mall-tiny-docker-compose服務沒法鏈接到mysql,須要在mysql中創建mall數據庫,同時導入mall.sql腳本。具體參考使用Dockerfile爲SpringBoot應用構建Docker鏡像中的運行mysql服務並設置部分。工具
注意:構建有問題的能夠參考使用Maven插件構建Docker鏡像
先將docker-compose.yml上傳至Linux服務器,再在當前目錄下運行以下命令:
docker-compose up -d