Docker Compose 構成をシンプル化: 本番=docker-compose.yml、開発=docker-compose.develop.yml

- docker-compose.yml を本番用に変更(旧 docker-compose.prod.yml の内容)
- docker-compose.develop.yml を新規追加(開発用)
- deploy.sh を追加(本番デプロイスクリプト)
- develop.bat を追加(ローカル開発起動スクリプト)
- docker-compose.prod.yml を削除
- 本番サーバーに .env → .env.production シンボリックリンク設置済み
- CLAUDE.md のデプロイコマンドを更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Akira
2026-03-15 15:43:50 +09:00
parent e3c21d6e81
commit 736b9c824e
6 changed files with 152 additions and 112 deletions

View File

@@ -1,15 +1,18 @@
version: '3.8'
networks:
traefik-net:
external: true
internal:
internal: true
services:
db:
image: postgis/postgis:16-3.4
container_name: keinasystem_db
restart: always
environment:
POSTGRES_DB: keinasystem
POSTGRES_USER: keinasystem
POSTGRES_PASSWORD: ${DB_PASSWORD}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
@@ -17,12 +20,15 @@ services:
interval: 5s
timeout: 5s
retries: 5
networks:
- internal
backend:
build:
context: ./backend
dockerfile: Dockerfile
dockerfile: Dockerfile.prod
container_name: keinasystem_backend
restart: always
environment:
DB_NAME: keinasystem
DB_USER: keinasystem
@@ -30,32 +36,47 @@ services:
DB_HOST: db
DB_PORT: 5432
SECRET_KEY: ${SECRET_KEY}
DEBUG: "True"
DEBUG: "False"
ALLOWED_HOSTS: main.keinafarm.net
CORS_ALLOWED_ORIGINS: https://main.keinafarm.net
MAIL_API_KEY: ${MAIL_API_KEY}
ports:
- "8000:8000"
volumes:
- ./backend:/app
FRONTEND_URL: https://main.keinafarm.net
depends_on:
db:
condition: service_healthy
command: python manage.py runserver 0.0.0.0:8000
networks:
- internal
- traefik-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.keinasystem-api.rule=Host(`main.keinafarm.net`) && PathPrefix(`/api/`)"
- "traefik.http.routers.keinasystem-api.entrypoints=websecure"
- "traefik.http.routers.keinasystem-api.tls=true"
- "traefik.http.routers.keinasystem-api.tls.certresolver=letsencrypt"
- "traefik.http.routers.keinasystem-api.priority=10"
- "traefik.http.services.keinasystem-api.loadbalancer.server.port=8000"
- "traefik.docker.network=traefik-net"
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
dockerfile: Dockerfile.prod
args:
NEXT_PUBLIC_API_URL: https://main.keinafarm.net
container_name: keinasystem_frontend
environment:
NEXT_PUBLIC_API_URL: http://localhost:8000
WATCHPACK_POLLING: "true"
ports:
- "3000:3000"
volumes:
- ./frontend:/app
- /app/node_modules
restart: always
depends_on:
- backend
networks:
- traefik-net
labels:
- "traefik.enable=true"
- "traefik.http.routers.keinasystem.rule=Host(`main.keinafarm.net`)"
- "traefik.http.routers.keinasystem.entrypoints=websecure"
- "traefik.http.routers.keinasystem.tls=true"
- "traefik.http.routers.keinasystem.tls.certresolver=letsencrypt"
- "traefik.http.routers.keinasystem.priority=5"
- "traefik.http.services.keinasystem.loadbalancer.server.port=3000"
volumes:
postgres_data: