iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

上一篇講完了 Network 之後,不知道各位有沒有感覺到一件事,那就是如果要同時開多個服務,需要一個一個開起來,相當的麻煩。且在微服務的概念中,正常會需要多個小的服務共同組成一個大的服務,因此同時開啟多個小服務是正常情況,那有沒有一個方式能夠快速開啟需要的服務呢?

當然有, Docker 也幫你想好了,那就是 Docker-Compose 。

Docker-Compose 可以用一個指令一次啟動多個 Container ,並且可以讓它們之間互相構通(就是上一篇講的 Network)。

首先就稍微改一下之前的 Demo ,假設我們需要一個 Flask 的後端、一個 Redis 的快取。

那麼這時候你就需要先寫一個 docker-compose.yml 的檔案。

test-project
├── app.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt

app.py

import os

from flask import Flask
from flask_redis import FlaskRedis


app = Flask(__name__)
app.config['REDIS_URL'] = os.environ['REDIS_URL']

r = FlaskRedis(app)


@app.route('/')
def index():
    if not r.exists("count"):
        r.set("count", 0)
    r.incr("count")
    return r.get("count")


if __name__ == "__main__":
    app.run(host="0.0.0.0")

docker-compose.yml

version: '3.8'

services:
  backend:
    build: .
    container_name: backend_flask
    networks:
      - net
    ports:
      - 5000:5000
    environment:
      - REDIS_URL=redis://cache:6379/0
    volumes:
      - .:/project:ro
    command: "python3 app.py"
  cache:
    image: redis
    container_name: database_redis
    networks:
      - net
    ports:
      - 6379:6379

networks:
  net:
    name: frnet
    driver: bridge

當你寫好了 docker-compose.yml 之後,接著就可以下指令讓所有服務一起執行起來了。

$ docker-compose up

接著就可以看到兩個服務一起執行起來了。

如果需要將所有服務一起停下,也可以透過指令一起停下。

$ docker-compose down

那麼就先到這邊,明天會詳細介紹每一行指令背後的用處。

大家掰~掰~


上一篇
Day 08 Docker Network
下一篇
Day 10 Docker-Compose - 2
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言