Compose 部署
Docker Compose 部署適合需要多個服務協作的應用,例如 Web 應用搭配資料庫與快取服務。你只需提供一份 docker-compose.yml 檔案,Piora 就能完成整個堆疊的部署。
建立 Compose 應用
Section titled “建立 Compose 應用”- 在 Piora 控制面板建立新應用
- 選擇「Docker Compose」作為部署方式
- 貼上或上傳你的
docker-compose.yml
範例:Node.js + PostgreSQL + Redis
Section titled “範例:Node.js + PostgreSQL + Redis”version: "3.8"
services: web: image: node:20-alpine working_dir: /app volumes: - ./:/app ports: - "3000:3000" environment: DATABASE_URL: postgresql://piora:secret@db:5432/myapp REDIS_URL: redis://cache:6379 depends_on: - db - cache
db: image: postgres:16-alpine environment: POSTGRES_USER: piora POSTGRES_PASSWORD: secret POSTGRES_DB: myapp volumes: - postgres_data:/var/lib/postgresql/data
cache: image: redis:7-alpine volumes: - redis_data:/data
volumes: postgres_data: redis_data:Compose 檔案語法
Section titled “Compose 檔案語法”| 設定 | 說明 |
|---|---|
image | Docker 映像名稱與標籤 |
build | 從 Dockerfile 建置的設定 |
ports | 連接埠映射 |
environment | 環境變數 |
volumes | 持久化儲存 |
depends_on | 服務啟動順序 |
restart | 重啟策略 |
deploy | 部署相關設定(副本數、資源限制) |
你可以在 Compose 檔案中為每個服務設定資源限制:
services: web: image: node:20-alpine deploy: resources: limits: cpus: "1.0" memory: 512M reservations: cpus: "0.25" memory: 128M環境變數管理
Section titled “環境變數管理”在 Compose 檔案中定義
Section titled “在 Compose 檔案中定義”services: web: environment: - NODE_ENV=production - PORT=3000使用 Piora 控制面板
Section titled “使用 Piora 控制面板”你也可以在 Piora 控制面板中設定環境變數,這些變數會覆蓋 Compose 檔案中的定義。這對於需要在不同環境使用不同值的機敏資訊特別有用。
管理 Compose 堆疊
Section titled “管理 Compose 堆疊”查看服務狀態
Section titled “查看服務狀態”在控制面板中可以看到 Compose 堆疊中每個服務的狀態、日誌與資源使用量。
個別服務操作
Section titled “個別服務操作”你可以針對 Compose 中的個別服務進行:
- 重啟單一服務
- 查看服務日誌
- 調整資源配置
- 進入容器 Shell
修改 Compose 檔案後,在控制面板中重新部署即可。Piora 會智慧判斷哪些服務需要更新,盡量減少不必要的重啟。
常見 Compose 範例
Section titled “常見 Compose 範例”WordPress + MySQL
Section titled “WordPress + MySQL”version: "3.8"services: wordpress: image: wordpress:6-apache ports: - "80:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wp WORDPRESS_DB_PASSWORD: secret WORDPRESS_DB_NAME: wordpress volumes: - wp_data:/var/www/html db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: rootsecret MYSQL_DATABASE: wordpress MYSQL_USER: wp MYSQL_PASSWORD: secret volumes: - db_data:/var/lib/mysqlvolumes: wp_data: db_data: