博客文章中有提到用Dockerfile來構建php、java項目、lnmp項目,可是會一步步部署容器,而後才能夠看到,比較繁瑣,docker-compose就能夠一鍵部署
php
Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,一般由多個容器組成。使用Docker Compose再也不須要使用shell腳原本啓動容器。
Compose 經過一個配置文件來管理多個Docker容器,在配置文件中,全部的容器經過services來定義,而後使用docker-compose腳原本啓動,中止和重啓應用,和應用中的服務以及全部依賴服務的容器,很是適合組合使用多個容器進行開發的場景。html
一、下載
https://github.com/docker/compose/releasesjava
二、[root@docker tools]# mv docker-compose-Linux-x86_64 /usr/bin/docker-composemysql
一、目錄結構
[root@docker docker-compose]# tree -L 2
.
├── docker-compose.yml
├── mysql
│ ├── conf
│ └── data
├── nginx-docker
│ ├── Dockerfile-nginx
│ └── nginx.conf
├── php-docker
│ ├── Dockerfile-php
│ ├── php-5.6.32.tar.gz
│ ├── php-fpm.conf
│ └── php.ini
└── wwwroot
├── 123
├── index.html
├── test.php
├── wordpress
└── wordpress-4.9.4-zh_CN.tar.gznginx
mysql 使用的是官方鏡像裝的git
三、cat docker-compose.yml 注意yml格式的編寫,必須有空格
version: '3'
services:
php:
hostname: lnmp_php
container_name: lnmp_php
image: 192.168.1.13/library/php:v5.6.32
networks:github
./wwwroot:/data/wwwsql
nginx:
hostname: nginx
container_name: nginx_v1
image: 192.168.1.13/library/nginx:v1.15
ports:docker
./wwwroot:/data/wwwshell
mysql:
hostname: mysql
container_name: mysql_wordpress
image: mysql:5.6
ports:
./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: user123
networks:
lnmp:
0、depends_on:由於服務啓動時,如果php沒啓動,nginx找不到,因此須要先啓動php,mysql,再啓動nginx
一、version: '3':指的docker-compose 的版本,有1,2,3版本
二、services:指的安裝哪些服務,lnmp服務
三、hostname:容器的主機名,進入容器的名字
四、container_name:容器的名字,docker ps -a 中的
五、image:引入鏡像,如果本地沒有,就去官網下載
六、networks:自定義網絡,默認是橋接模式,能夠用docker images ls 看
七、volumes:至關於bind這樣的數據卷掛載,可使用絕對或者相對路徑
八、也能夠本身構建鏡像
build:
context: ../ 這個是在哪一個目錄
dockerfile: path/of/Dockerfile 這個是哪一個dockerfile
九、ports: 開放端口,好比3306:3306 ,那這樣宿主機也能夠鏈接管理
十、environment :mysql參數設置
一、前臺運行,看是否有報錯
docker-compose -f docker-compose.yml up
二、後臺運行
docker-compose -f docker-compose.yml up -d
三、若是有報錯看日誌
docker logs f18c58b39949 -f
一、nginx服務器須要共享須要常常修改的文件,如:nginx.conf、wwwroot二、php 也要設置wwwroot,否則解析不了三、mysql:須要共享配置文件、數據庫目錄