version: "3.2" services: api: image: node:latest ports: - "4096:4096" - "3001:3001" volumes: - ../api:/app - ./wait-for-it.sh:/wait-for-it.sh # make the API wait for mysql and Hasura to start first command: ./wait-for-it.sh mysql:3306 -t 60 -- ./wait-for-it.sh graphql-engine:8080 -t 60 -- sh -cx 'cd /app && yarn install && yarn start' depends_on: - graphql-engine - mysql environment: CANNY_KEY: ${CANNY_KEY?canny_key} FACEBOOK_API_ENDPOINT: ${FACEBOOK_API_ENDPOINT?facebook_api_endpoint} FERRY_SECRET: ${FERRY_RELOAD_SECRET?ferry_reload_secret} FRONTEND_ENDPOINT: ${FRONTEND_ENDPOINT?frontend_endpoint} GRAPHQL_ENDPOINT: http://graphql-engine:8080/v1/graphql MYSQL_HOST: ${MYSQL_HOST?host} MYSQL_PORT: ${MYSQL_PORT?port} MYSQL_USER: ${MYSQL_USERNAME?username} MYSQL_PASSWORD: ${MYSQL_ROOT_PASSWORD?password} MYSQL_URL: ${MYSQL_URL?mysql_url} NODE_ENV: development POSTHOG_API_KEY: ${POSTHOG_API_KEY?posthog_api_key} POSTHOG_HOST: ${POSTHOG_HOST?posthog_host} SESSION_SECRET: ${SESSION_SECRET?session_secret} STUDENTS_DB: yaleplus YALIES_API_KEY: ${YALIES_API_KEY?yalies_api_key} SECURE_PORT: ${SECURE_PORT?secure_port} INSECURE_PORT: ${INSECURE_PORT?insecure_port} CHALLENGE_PASSWORD: ${CHALLENGE_PASSWORD?challenge_password} graphql-engine: image: hasura/graphql-engine:latest ports: - "8085:8080" environment: HASURA_GRAPHQL_DATABASE_URL: ${FERRY_POSTGRES_URI?ferry_db} HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log ## uncomment next line to set an admin secret # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey mysql: build: ./mysql command: --default-authentication-plugin=mysql_native_password --log-warnings environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD?password} ports: - "3306:3306" volumes: # This will get used to initialize the database: see # "Initializing a fresh instance" # in https://hub.docker.com/_/mariadb - ./mysql/database.sql:/docker-entrypoint-initdb.d/00-database.sql phpmyadmin: image: phpmyadmin:latest depends_on: - mysql environment: PMA_HOST: mysql MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD?password} ports: - "8081:80" legacy: image: nginx ports: - "8075:80" volumes: - ../legacy:/usr/share/nginx/html:ro