name: abc-user-feedback-deploy services: web: build: context: .. dockerfile: docker/web.dockerfile environment: NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL} INTERNAL_API_BASE_URL: http://api:4000 SUPPORT_API_BASE_URL: http://secretary-api:8010 SECRETARY_ABC_API_KEY: ${SECRETARY_ABC_API_KEY:-} ports: - '${WEB_PORT:-3030}:3000' depends_on: api: condition: service_started secretary-api: condition: service_started restart: unless-stopped api: build: context: .. dockerfile: docker/api.dockerfile environment: APP_ADDRESS: 0.0.0.0 APP_PORT: 4000 ADMIN_WEB_URL: ${ADMIN_WEB_URL} BASE_URL: ${BASE_URL} JWT_SECRET: ${JWT_SECRET} INITIAL_SUPER_ADMIN_PHONE_NUMBER: ${INITIAL_SUPER_ADMIN_PHONE_NUMBER:-} ADMIN_CANDIDATE_EMAILS: ${ADMIN_CANDIDATE_EMAILS:-} GITEA_API_URL: ${GITEA_API_URL:-https://gitea.hmac.kr/api/v1} GITEA_API_TOKEN: ${GITEA_API_TOKEN:-} GITHUB_API_TOKEN: ${GITHUB_API_TOKEN:-} JIRA_API_EMAIL: ${JIRA_API_EMAIL:-} JIRA_API_TOKEN: ${JIRA_API_TOKEN:-} JIRA_WEBHOOK_SECRET: ${JIRA_WEBHOOK_SECRET:-} JIRA_ISSUE_TYPE: ${JIRA_ISSUE_TYPE:-Task} MYSQL_PRIMARY_URL: mysql://userfeedback:userfeedback@mysql:3306/userfeedback SMTP_ENABLED: ${SMTP_ENABLED:-false} SMTP_HOST: ${SMTP_HOST:-} SMTP_PORT: ${SMTP_PORT:-25} SMTP_SENDER: ${SMTP_SENDER:-} SMTP_USERNAME: ${SMTP_USERNAME:-} SMTP_PASSWORD: ${SMTP_PASSWORD:-} SMTP_TLS: ${SMTP_TLS:-false} SMTP_CIPHER_SPEC: ${SMTP_CIPHER_SPEC:-} SMTP_OPPORTUNISTIC_TLS: ${SMTP_OPPORTUNISTIC_TLS:-false} MASTER_API_KEY: ${MASTER_API_KEY:-} SUPPORT_API_BASE_URL: http://secretary-api:8010 ACCESS_TOKEN_EXPIRED_TIME: ${ACCESS_TOKEN_EXPIRED_TIME:-10m} REFRESH_TOKEN_EXPIRED_TIME: ${REFRESH_TOKEN_EXPIRED_TIME:-1h} AUTO_MIGRATION: ${AUTO_MIGRATION:-true} OPENSEARCH_USE: ${OPENSEARCH_USE:-false} OPENSEARCH_NODE: ${OPENSEARCH_NODE:-} OPENSEARCH_USERNAME: ${OPENSEARCH_USERNAME:-} OPENSEARCH_PASSWORD: ${OPENSEARCH_PASSWORD:-} NAVER_WORKS_ENABLED: ${NAVER_WORKS_ENABLED:-false} NAVER_WORKS_API_BASE_URL: ${NAVER_WORKS_API_BASE_URL:-https://www.worksapis.com/v1.0} NAVER_WORKS_AUTH_URL: ${NAVER_WORKS_AUTH_URL:-https://auth.worksmobile.com/oauth2/v2.0/token} NAVER_WORKS_ACCESS_TOKEN: ${NAVER_WORKS_ACCESS_TOKEN:-} NAVER_WORKS_BOT_ID: ${NAVER_WORKS_BOT_ID:-} NAVER_WORKS_DEFAULT_ROOM_ID: ${NAVER_WORKS_DEFAULT_ROOM_ID:-} NAVER_WORKS_CLIENT_ID: ${NAVER_WORKS_CLIENT_ID:-} NAVER_WORKS_CLIENT_SECRET: ${NAVER_WORKS_CLIENT_SECRET:-} NAVER_WORKS_SERVICE_ACCOUNT: ${NAVER_WORKS_SERVICE_ACCOUNT:-} NAVER_WORKS_PRIVATE_KEY: ${NAVER_WORKS_PRIVATE_KEY:-} NAVER_WORKS_SCOPE: ${NAVER_WORKS_SCOPE:-bot.message bot} NAVER_WORKS_MAX_RETRIES: ${NAVER_WORKS_MAX_RETRIES:-3} NAVER_WORKS_MAX_MESSAGE_LENGTH: ${NAVER_WORKS_MAX_MESSAGE_LENGTH:-1000} depends_on: mysql: condition: service_healthy restart: unless-stopped secretary-api: build: context: .. dockerfile: docker/secretary-api.dockerfile environment: APP_NAME: secretary-api APP_ENV: ${APP_ENV:-staging} APP_HOST: 0.0.0.0 APP_PORT: 8010 DOCS_ROOT_PATH: /secretary-docs DATABASE_URL: mysql+pymysql://baron_support:baron_support@mysql-secretary:3306/baron_support ABC_API_BASE_URL: http://api:4000 ABC_API_KEY: ${SECRETARY_ABC_API_KEY:-} MASTER_API_KEY: ${MASTER_API_KEY:-} ADMIN_CANDIDATE_TENANT_ID: ${ADMIN_CANDIDATE_TENANT_ID:-} INITIAL_SUPER_ADMIN_PHONE_NUMBER: ${INITIAL_SUPER_ADMIN_PHONE_NUMBER:-} SSO_ISSUER: ${SSO_ISSUER:-} SSO_CLIENT_ID: ${SSO_CLIENT_ID:-} SSO_CLIENT_SECRET: ${SSO_CLIENT_SECRET:-} JWT_SECRET: ${JWT_SECRET} UPLOAD_ROOT_DIR: /app/uploads UPLOAD_MAX_FILE_SIZE_MB: ${UPLOAD_MAX_FILE_SIZE_MB:-30} depends_on: api: condition: service_started mysql-secretary: condition: service_healthy volumes: - ../uploads:/app/uploads restart: unless-stopped mysql: image: mysql:8.0 command: [ '--default-authentication-plugin=mysql_native_password', '--collation-server=utf8mb4_bin', ] environment: MYSQL_ROOT_PASSWORD: userfeedback MYSQL_DATABASE: userfeedback MYSQL_USER: userfeedback MYSQL_PASSWORD: userfeedback TZ: UTC # 스테이징 외부 DB 접속용 포트입니다. ports: - '${MYSQL_PORT:-13306}:3306' healthcheck: test: [ 'CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD --silent', ] interval: 5s timeout: 5s retries: 30 start_period: 15s volumes: - mysql:/var/lib/mysql restart: unless-stopped mysql-secretary: hostname: mysql-secretary image: mysql:8.0 command: [ '--default-authentication-plugin=mysql_native_password', '--collation-server=utf8mb4_bin', '--default-time-zone=+09:00', ] environment: MYSQL_ROOT_PASSWORD: baron_support MYSQL_DATABASE: baron_support MYSQL_USER: baron_support MYSQL_PASSWORD: baron_support TZ: Asia/Seoul # 스테이징 외부 DB 접속용 포트입니다. ports: - '${MYSQL_SECRETARY_PORT:-13308}:3306' healthcheck: test: [ 'CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD --silent', ] interval: 5s timeout: 5s retries: 30 start_period: 15s volumes: - mysql-secretary:/var/lib/mysql restart: unless-stopped volumes: mysql: mysql-secretary: