version: '3.8' services: # PostgreSQL(Odoo用) postgres: image: postgres:15-alpine container_name: odoo_db environment: POSTGRES_DB: odoo POSTGRES_USER: odoo POSTGRES_PASSWORD: odoo_secure_password volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" networks: - odoo_network restart: unless-stopped # Odoo odoo: image: odoo:17.0 container_name: odoo_app depends_on: - postgres environment: HOST: postgres USER: odoo PASSWORD: odoo_secure_password DB_NAME: odoo volumes: - odoo_data:/var/lib/odoo - ./addons:/mnt/extra-addons ports: - "8069:8069" networks: - odoo_network restart: unless-stopped # REST API(モバイル同期用) api: build: context: ./api dockerfile: Dockerfile container_name: mobile_sync_api depends_on: - postgres - odoo environment: DATABASE_URL: postgresql://odoo:odoo_secure_password@postgres:5432/odoo ODOO_URL: http://odoo:8069 ODOO_USER: admin ODOO_PASSWORD: admin API_SECRET_KEY: your_secret_key_here_change_me ports: - "8000:8000" volumes: - ./api:/app networks: - odoo_network command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload restart: unless-stopped # 同期・バックアップスクリプト(定期実行) sync_scheduler: build: context: ./scheduler dockerfile: Dockerfile container_name: sync_scheduler depends_on: - postgres - odoo - api environment: DATABASE_URL: postgresql://odoo:odoo_secure_password@postgres:5432/odoo ODOO_URL: http://odoo:8069 ODOO_USER: admin ODOO_PASSWORD: admin NEXTCLOUD_URL: https://your_nextcloud_url NEXTCLOUD_USER: your_nextcloud_user NEXTCLOUD_PASSWORD: your_nextcloud_password volumes: - ./scheduler:/app - sync_logs:/var/log/sync networks: - odoo_network restart: unless-stopped volumes: postgres_data: odoo_data: sync_logs: networks: odoo_network: driver: bridge