iT邦幫忙

2023 iThome 鐵人賽

0
DevOps

跟著菜鳥手把手用Docker建立服務系列 第 18

Day18 - 菜鳥們來研究 Docker Compose 的使用

  • 分享至 

  • xImage
  •  

前面有特別講解一下Docker Compose的基本概念,那今天我們來講講我們要如何使用 Docker Compose,來完成我們想要做的事/images/emoticon/emoticon08.gif


Docker Compose最重要的是 Yaml檔,必須透過我們在 Yaml 檔所設計的內容,去啟動自己想要的Docker Image 及 Container

Yaml 使用講解

version: "3.8"

services: # 容器
  servicename: # 服務名字,這個名字也是內部Bridge網絡可以使用的DNS name
    build: #我們可以透過這個參數來指定這個 container 所要使用的 Dockerfile
    image: # 鏡像的名字
    command: # 可選,如果設置,則會覆蓋默認image裡的CMD命令
    environment: # 可選,相當於docker run裡的 --env
    depends_on: # 這邊設定先啟動好哪個Service,再啟動自己的Service
    volumes: # 可選,相當於 docker run裡的 -v
    networks: # 可選,相當於 docker run裡的 --network
    ports: - # 可選,相當於 docker run裡的 -p
  servicename2:
    .......

volumes: # 可選,相當於 docker volume create

networks: # 可選,相當於 docker network create
version: "3.8"

services:
  flask:
    build:
      context: ./flask
      dockerfile: Dockerfile
    image: flask-demo:latest
    environment:
      - REDIS_HOST=redis-server
      - REDIS_PASS=${REDIS_PASSWORD}
    depends_on:
      - redis-server
    networks:
      - backend
      - frontend

  redis-server:
     image: redis:latest
     command: redis-server --requirepass ${REDIS_PASSWORD}
     networks:
      - backend
      
networks:
    backend:
    frontend:
  • build

    • context: ./flask => 指的是Dockerfile的路徑
    • dockerfile: Dockerfile => Dockerfile名稱
  • image

    • image: flask-demo:latest => 指定了要使用的映像,這是在 Docker Hub 上的 flask-demo 映像的最新版本
      如果 build 跟 image 同時使用時, image 是,Compose 將首先使用指定的映像,然後應用 build 中的任何設置
  • environment

    • REDIS_HOST=redis-server => 設定還境REDIS_HOST變數
    • REDIS_PASS=${REDIS_PASSWORD} => 這邊我們可以彈性的修改REDIS_PASSWORD變數
  • depends_on

    • redis-server => 代表redis-server先啟動好才會啟動自己的Service(flask)
  • networks

    • backend 跟 frontend => 這邊 Networks 分別 Bind backend 跟 frontend
  • command

    • redis-server --requirepass ${REDIS_PASSWORD} => 執行 CMD 指令
  • networks(這邊事主層)

    • backend 跟 frontend => 建立 backend 跟 frontend 的 Network

這邊有大概仔細講解一下Yaml檔的設計概念,這樣就會越來越清楚在做什麼,或許可能沒辦法完全理解,沒關係後面會一一實作,就會更了解了/images/emoticon/emoticon07.gif


上一篇
Day17 - 菜鳥們來一起使用 Docker Compose
下一篇
Day19 - 菜鳥們來研究 Docker Compose 指令
系列文
跟著菜鳥手把手用Docker建立服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言