diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cfb5251 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,117 @@ +version: '3.8' + +networks: + urban_network: + driver: bridge + +services: + postgres: + image: postgres:18 + container_name: postgres_urban + env_file: + - .env + environment: + POSTGRES_DB: urban + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - "5431:5432" + volumes: + - postgres_data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - urban_network + backend: + build: + context: ./bot-wsp + dockerfile: ./Dockerfile + container_name: urban_backend + env_file: + - .env + environment: + - PORT=3001 + - PORT_WSP=3008 + depends_on: + postgres: + condition: service_healthy + ports: + - "3001:3001" + volumes: + - ./bot-wsp/bot_sessions:/app/bot_sessions + - ./bot-wsp/assets:/app/assets + - ./bot-wsp/tmp:/app/tmp + - bot_tokens:/app/tokens + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3001/api/docs"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + # restart: unless-stopped + command: ["sh", "-c", "npx prisma migrate deploy && node --enable-source-maps --trace-uncaught --unhandled-rejections=strict dist/main.js"] + + networks: + - urban_network + frontend: + build: + context: ./front-urban + dockerfile: ./Dockerfile + # args: + # NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL} + # NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL} + # NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL} + # NEXT_PUBLIC_MIN_AUTH: ${NEXT_PUBLIC_MIN_AUTH} + # NEXT_PUBLIC_DOCS_URL: ${NEXT_PUBLIC_DOCS_URL} + # NEXT_PUBLIC_PRO_URL: ${NEXT_PUBLIC_PRO_URL} + # NEXT_PUBLIC_REPO_NAME: ${NEXT_PUBLIC_REPO_NAME} + container_name: urban_frontend + # env_file: + # - .env + environment: + - PORT=3000 + depends_on: + backend: + condition: service_healthy + ports: + - "3000:3000" + restart: unless-stopped + networks: + - urban_network + + odoo: + image: "${ODOO_IMAGE}:${ODOO_VERSION}" + container_name: "${ODOO_CONTAINER_NAME}" + depends_on: + - db + ports: + - "${ODOO_PORT}:8069" + environment: + - HOST=db + - USER=${DB_USER} + - PASSWORD=${DB_PASSWORD} + volumes: + - ./config/odoo.conf:/etc/odoo/odoo.conf + - ./extra-addons:/mnt/extra-addons + - odoo-data:/var/lib/odoo + + db: + image: postgres:13 + container_name: "${DB_CONTAINER_NAME}" + ports: + - "${DB_PORT}:5432" + environment: + - POSTGRES_DB=postgres + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWORD} + volumes: + - db-data:/var/lib/postgresql/data + +volumes: + postgres_data: + bot_tokens: + odoo-data: {} + db-data: {}