docker-compose入門指南

什麼是 docker-compose

通俗的說,docker-compose 正如其名,是將你的多個 docker 容器服務整合起來的命令行工具。舉個例子,假設你有一個 MySQL 實例和一個 Node.js 實例分別部署在兩個容器中,僅需一個docker-compose.yml文件,docker-compose 就能夠爲你完成從打包到運行的全部步驟,並若是你還在苦惱手動執行各類docker run [] 命令,這份指南可能可以幫上你。mysql

安裝

若是你是在本地開發環境中使用 docker-compose,你不須要安裝任何的依賴項,Docker for Windows 和 Docker for Mac 都已經內置了 docker-compose 的包git

在 Linux based 服務器上安裝:github

  • 在 terminal 中運行 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m`-o /usr/local/bin/docker-compose 下載 docker-compose 的安裝腳本
  • 爲腳本添加執行權限sudo chmod +x /usr/local/bin/docker-compose
  • 執行腳本sh /usr/local/bin/docker-compose

容器編排

docker-compose 使用目錄下的docker-compose.yml 做爲項目的配置文件, 以上述咱們舉的 MySQL 和 Node.js 應用的例子 docker-compose.yml 文件應該具備相似如下的結構:web

你能夠在Github上克隆和運行下文中的示例sql

services:
  mysql:
    image: mysql:latest
    ports:
      - '3306:3306'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: '123456'

  webapp:
    build: .
    container_name: webapp
    restart: always
    depends_on:
      - 'mysql'
    environment:
      NODE_ENV: 'production'
    ports:
      - '80:8080'
複製代碼

看不懂是很正常的,下面咱們來一條一條詳細剖析每一個配置項是什麼意思docker

  • services 表示該集合下包含的全部服務,在這個例子中咱們有 mysql 和 webapp 兩個服務數據庫

  • image 表示從官方維護的 mysql 鏡像構建咱們的容器express

  • port 表示將 docker 宿主機的 3306 端口映射 docker 容器的 3306 端口上,這樣咱們就能在宿主上經過 localhost:3306 鏈接到咱們的 mysql 數據庫django

  • webapp服務器

    • build: 表示 docker 從哪一個文件夾開始構建鏡像
    • container_name: 容器名字
    • restart: 表示 Dockerfile 中的 CMD 命令返回任何非 0 的狀態時都將重啓容器
    • depends_on: 容器的依賴。在這裏,webapp 容器會保證在 mysql 容器以後啓動。
    • environment: 須要注入的 unix 環境變量,供容器使用。

注意:services 下的全部服務會共享同一個 docker network,這意味着你能夠再 webapp 容器中經過 mysql:3306 訪問到 mysql 服務,在 mysql 容器中經過 webapp:8080 訪問到咱們的 express 服務端, 更加詳細的 networks 配置請查閱 Networking in Compose

depends_on 僅僅保證容器的執行順序,而不保證你的應用已經在可用的狀態(無論可用的狀態對於你的應用意味着什麼)。docker 這樣設計是通過了周密考慮的:爲了保證應用的健壯性,你應該自行定義在容器之間服務鏈接錯誤時候的重試/重啓機制。

  1. 接下來,你僅須要在項目目錄下運行docker-compose up 便可看到 docker 開始構建鏡像並啓動服務
  2. 若是須要之後臺守護進程模式啓動 使用docker-compose up -d
  3. docker-compose down來中止運行中的容器
  4. docker-compose build從新構建容器

運行成功後,訪問http://localhost 能夠看到 express 服務器的 hello world 示例,http://localhost/mysql 能夠檢查 mysql 鏈接狀態

docker 官網提供的其餘示例:

完整的配置項文檔請移步docker 官網文檔

原文連接

相關文章
相關標籤/搜索