確認都有右側檔案後就可以執行

<aside> 🐋

docker-compose up -d --build

</aside>

成功後

image.png

只要跟你同個VLAN的人,就都可以透過:

IP:5000 來連到你的網站了!

可以執行docker-compose down -v 刪除前一次的容器

若出錯可以深度清理記憶體 docker builder prune -f

image.png

docker-compose.yml

version: '3.8'

services:
  # 資料庫服務
  db:
    image: mysql:8.0
    container_name: mysql_db
    
    restart: always
    environment:
      MYSQL_DATABASE: my_shop      # 資料庫名稱
      MYSQL_ROOT_PASSWORD: 11256040 # 資料庫密碼
    ports:
      - "3307:3306" # 右邊是本機跑的服務
    volumes:
      - db_data:/var/lib/mysql     
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 將你的資料庫輸出成.sql

  # Flask 後端服務
  flask_app:
    build: .
    container_name: flask_backend
    restart: always
    ports:
      - "5000:5000"
    environment:
      # 這裡的 HOST 要填上面定義的服務名稱 "db"
      DB_HOST: db
      DB_USER: root
      DB_PASSWORD: 11256040
      DB_NAME: my_shop
    depends_on:
      - db

volumes:
  db_data:

Dockerfile

# 使用輕量級 Python 映像檔
FROM python:3.9-slim

# 設定工作目錄
WORKDIR /app

# 複製 requirements.txt 並安裝套件
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 複製所有程式碼到容器內
COPY . .

# 暴露 Flask 預設的 5000 埠
EXPOSE 5000

# 啟動指令
CMD ["python", "app.py"]

requirements.txt

flask
flask-cors
flask-mail
mysql-connector-python
python-dotenv

.env

# 資料庫設定
DB_HOST=127.0.0.1
DB_USER=root
DB_PASSWORD=你的密碼
DB_NAME=shop_db

# Email 設定
[email protected]
MAIL_PASSWORD=16位密碼
[email protected]

FLASK_APP=app.py
FLASK_DEBUG=1