version: '3' services: client: container_name: client image: ghcr.io/rolling-scopes/rsschool-app-client:master ports: - 8081:8080 environment: RS_HOST: ${RS_HOST} RSSHCOOL_UI_GCP_MAPS_API_KEY: ${RSSHCOOL_UI_GCP_MAPS_API_KEY} restart: on-failure depends_on: - server - nestjs networks: - shared-network server: container_name: server image: ghcr.io/rolling-scopes/rsschool-app-server:master ports: - 8080:8080 environment: RSSHCOOL_API_AUTH_CALLBACK: ${RSSHCOOL_API_AUTH_CALLBACK} RSSHCOOL_API_AUTH_CLIENT_ID: ${RSSHCOOL_API_AUTH_CLIENT_ID} RSSHCOOL_API_AUTH_CLIENT_SECRET: ${RSSHCOOL_API_AUTH_CLIENT_SECRET} RSSHCOOL_API_AUTH_SUCCESS_REDIRECT: ${RSSHCOOL_API_AUTH_SUCCESS_REDIRECT} RSSHCOOL_API_SESSION_KEY: ${RSSHCOOL_API_SESSION_KEY} RSSHCOOL_API_PG_HOST: ${RSSHCOOL_API_PG_HOST} RSSHCOOL_API_PG_USERNAME: ${RSSHCOOL_API_PG_USERNAME} RSSHCOOL_API_PG_PASSWORD: ${RSSHCOOL_API_PG_PASSWORD} RSSHCOOL_API_PG_DATABASE: ${RSSHCOOL_API_PG_DATABASE} RSSHCOOL_API_ADMIN_USERNAME: ${RSSHCOOL_API_ADMIN_USERNAME} RSSHCOOL_API_ADMIN_PASSWORD: ${RSSHCOOL_API_ADMIN_PASSWORD} RSSHCOOL_API_INTEGRATIONS_DISCORD_GRATITUDE_URL: ${RSSHCOOL_API_INTEGRATIONS_DISCORD_GRATITUDE_URL} RSSHCOOL_API_HIRERS: ${RSSHCOOL_API_HIRERS} RSSHCOOL_API_AWS_SECRET_ACCESS_KEY: ${RSSHCOOL_API_AWS_SECRET_ACCESS_KEY} RSSHCOOL_API_AWS_ACCESS_KEY_ID: ${RSSHCOOL_API_AWS_ACCESS_KEY_ID} RSSHCOOL_API_AWS_REGION: ${RSSHCOOL_API_AWS_REGION} RSSHCOOL_API_AWS_REST_API_URL: ${RSSHCOOL_API_AWS_TASK_API_URL} RSSHCOOL_API_AWS_REST_API_KEY: ${RSSHCOOL_API_AWS_TASK_API_KEY} RSSHCOOL_API_GITHUB_APP_ID: ${RSSHCOOL_API_GITHUB_APP_ID} RSSHCOOL_API_GITHUB_APP_INSTALL_ID: ${RSSHCOOL_API_GITHUB_APP_INSTALL_ID} RSSHCOOL_API_GITHUB_PRIVATE_KEY: ${RSSHCOOL_API_GITHUB_PRIVATE_KEY} RSSHCOOL_API_USERS_CLOUD_USERNAME: ${RSSHCOOL_USERS_CLOUD_USERNAME} RSSHCOOL_API_USERS_CLOUD_PASSWORD: ${RSSHCOOL_USERS_CLOUD_PASSWORD} RSSHCOOL_HOST: https://app.rs.school restart: on-failure networks: - shared-network nestjs: container_name: nestjs image: ghcr.io/rolling-scopes/rsschool-app-nestjs:master ports: - 8082:8080 environment: RSSHCOOL_HOST: ${RS_HOST} RSSHCOOL_PG_HOST: ${RSSHCOOL_API_PG_HOST} RSSHCOOL_PG_USERNAME: ${RSSHCOOL_API_PG_USERNAME} RSSHCOOL_PG_PASSWORD: ${RSSHCOOL_API_PG_PASSWORD} RSSHCOOL_PG_DATABASE: ${RSSHCOOL_API_PG_DATABASE} RSSHCOOL_USERS_ADMINS: 'apalchys,dzmitry-varabei,mikhama,sonejka,aaliakseyenka' RSSHCOOL_USERS_HIRERS: ${RSSHCOOL_USERS_HIRERS} RSSHCOOL_AUTH_GITHUB_CALLBACK: ${RSSHCOOL_API_AUTH_CALLBACK} RSSHCOOL_AUTH_GITHUB_CLIENT_ID: ${RSSHCOOL_API_AUTH_CLIENT_ID} RSSHCOOL_AUTH_GITHUB_CLIENT_SECRET: ${RSSHCOOL_API_AUTH_CLIENT_SECRET} RSSHCOOL_AUTH_GITHUB_WEBHOOK_ACTIVITY_SECRET: ${RSSHCOOL_AUTH_GITHUB_WEBHOOK_ACTIVITY_SECRET} RSSHCOOL_AUTH_JWT_SECRET_KEY: ${RSSHCOOL_API_SESSION_KEY} RSSHCOOL_AWS_SECRET_ACCESS_KEY: ${RSSHCOOL_API_AWS_SECRET_ACCESS_KEY} RSSHCOOL_AWS_ACCESS_KEY_ID: ${RSSHCOOL_API_AWS_ACCESS_KEY_ID} RSSHCOOL_AWS_REGION: ${RSSHCOOL_API_AWS_REGION} RSSHCOOL_AWS_REST_API_URL: ${RSSHCOOL_API_AWS_TASK_API_URL} RSSHCOOL_AWS_REST_API_KEY: ${RSSHCOOL_API_AWS_TASK_API_KEY} RSSHCOOL_USERS_CLOUD_USERNAME: ${RSSHCOOL_USERS_CLOUD_USERNAME} RSSHCOOL_USERS_CLOUD_PASSWORD: ${RSSHCOOL_USERS_CLOUD_PASSWORD} restart: on-failure networks: - shared-network depends_on: - server nginx: container_name: nginx image: nginx:1.21-alpine restart: unless-stopped volumes: - ./nginx:/etc/nginx - ./letsencrypt:/etc/letsencrypt - ./certbot:/var/www/certbot command: '/bin/sh -c ''while :; do sleep 12h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"''' ports: - 80:8080 - 443:443 networks: - shared-network depends_on: - client - server - nestjs certbot: container_name: certbot image: certbot/certbot restart: unless-stopped volumes: - ./letsencrypt:/etc/letsencrypt - ./certbot:/var/www/certbot entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;'" depends_on: - nginx networks: shared-network: