Files
egbim_qa_platform/docker/docker-compose.prod.yml
T
root 33453ecc55
Deploy staging / deploy (push) Failing after 6s
Initial deployment setup
2026-08-31 16:45:24 +09:00

174 lines
5.7 KiB
YAML

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: