services: db: image: postgres:16 container_name: db profiles: - prod env_file: - .env ports: - "${PGPORT}:${PGPORT}" volumes: - postgres-db:/var/lib/postgresql/data environment: - POSTGRES_USER=${PGUSER} - POSTGRES_PASSWORD=${PGPASSWORD} - POSTGRES_DB=${PGDATABASE} restart: unless-stopped api: container_name: api build: context: ./api dockerfile: Dockerfile profiles: - prod env_file: - .env ports: - "${SERVER_PORT}:${SERVER_PORT}" volumes: - api:/usr/src/app depends_on: - db command: ./bin/api restart: unless-stopped migrator: container_name: migrator profiles: - prod build: context: ./migrator dockerfile: Dockerfile env_file: - .env depends_on: - api - db volumes: - goose:/migrations command: goose up spa: container_name: spa profiles: - prod build: context: ./spa dockerfile: Dockerfile env_file: - .env nginx: build: context: ./nginx dockerfile: Dockerfile profiles: - prod - dev env_file: .env container_name: nginx restart: unless-stopped ports: - "80:80" - "443:443" volumes: - certbot_data:/etc/letsencrypt - certbot_www:/var/www/certbot - ./spa/app:/usr/share/nginx/html - ./valitovgaziz/html:/usr/share/nginx/valitovgaziz/html networks: - web-network - internal depends_on: - certbot certbot: build: context: ./certbot dockerfile: Dockerfile container_name: certbot profiles: - prod - dev volumes: - ./certbot/config:/etc/letsencrypt/config - certbot_data:/etc/letsencrypt - certbot_www:/var/www/certbot env_file: - .env environment: - EMAIL=valitovgaziz@yandex.ru - DOMAINS=yalarba.ru - STAGING=0 restart: unless-stopped keycloak: build: context: ./keycloak dockerfile: Dockerfile container_name: keycloak ports: - "8080:8080" profiles: - prod - dev - kk environment: KC_ADMIN: admin KC_ADMIN_PASSWORD: admin PROXY_ADDRESS_FORWARDING: true KС_HTTPS_PORT: 8443 KС_HTTP_PORT: 8080 KС_LOGLEVEL: INFO KС_HTTP_PROXY: true KС_HTTPS_REDIRECT: false KC_HOSTNAME_STRICT: false KC_PROXY: passthrough KC_HTTP_ENABLED: true KC_HOSTNAME: yalarba.ru KC_HOSTNAME_STRICT_BACKCHANNEL: false KC_FRONTEND_URL: https://yalarba.ru/auth command: start --optimized networks: - internal kk_db: image: postgres:16 container_name: kk_db profiles: - prod - dev environment: POSTGRES_DB: keycloak POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres volumes: - keycloak-postgres:/var/lib/postgresql/data networks: - internal volumes: api: postgres-db: goose: certbot_data: certbot_www: keycloak-postgres: networks: web-network: driver: bridge internal: