1. 程式人生 > >docker-compose 一鍵部署lnmp

docker-compose 一鍵部署lnmp

docker-compose用處

部落格文章中有提到用Dockerfile來構建php、java專案、lnmp專案,但是會一步步部署容器,然後才可以看到,比較繁瑣,docker-compose就可以一鍵部署

介紹

Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose不再需要使用shell指令碼來啟動容器。 
Compose 通過一個配置檔案來管理多個Docker容器,在配置檔案中,所有的容器通過services來定義,然後使用docker-compose指令碼來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。

安裝

1、下載
https://github.com/docker/compose/releases

docker-compose 一鍵部署lnmp

2、[[email protected] tools]# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

執行

1、目錄結構
[[email protected] 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.gz

mysql 使用的是官方映象裝的

docker-compose 一鍵部署lnmp

3、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:

  • lnmp
    volumes:
  • ./wwwroot:/data/www

    nginx:
    hostname: nginx
    container_name: nginx_v1
    image: 192.168.1.13/library/nginx:v1.15
    ports:

  • 81:80
    depends_on:
  • php
  • mysql
    networks:
  • lnmp
    volumes:
  • ./wwwroot:/data/www

    mysql:
    hostname: mysql
    container_name: mysql_wordpress
    image: mysql:5.6
    ports:

  • 3306:3306
    networks:
  • lnmp
    volumes:
  • ./mysql/conf/my.cnf:/etc/my.cnf
  • ./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
1、version: '3':指的docker-compose 的版本,有1,2,3版本
2、services:指的安裝哪些服務,lnmp服務
3、hostname:容器的主機名,進入容器的名字
4、container_name:容器的名字,docker ps -a 中的
5、image:引入映象,若是本地沒有,就去官網下載
6、networks:自定義網路,預設是橋接模式,可以用docker images ls 看
7、volumes:相當於bind這樣的資料卷掛載,可以使用絕對或者相對路徑
8、也可以自己構建映象
build:
context: ../ 這個是在哪個目錄
dockerfile: path/of/Dockerfile 這個是哪個dockerfile
9、ports: 開放埠,比如3306:3306 ,那這樣宿主機也可以連線管理
10、environment :mysql引數設定

執行啟動

1、前臺執行,看是否有報錯
docker-compose -f docker-compose.yml up

2、後臺執行
docker-compose -f docker-compose.yml up -d

3、如果有報錯看日誌
docker logs f18c58b39949 -f

維護

1、nginx伺服器需要共享需要經常修改的檔案,如:nginx.conf、wwwroot
2、php 也要設定wwwroot,不然解析不了
3、mysql:需要共享配置檔案、資料庫目錄