본문으로 건너뛰기

Docker Compose 환경변수

FlowKat 서버는 Docker Compose로 7개 서비스를 운영한다. 환경변수는 .env 파일로 관리하며 환경별(dev/prod/aircap/demo) 프리셋을 제공한다.


1. 서비스 구성

서비스Docker 이미지기술 스택시작 순서
postgresflowkat/postgres-ai:16.5PostgreSQL 16 + pgvector + pg_partman1
valkeyvalkey/valkey:9.0-alpineValkey 9.0 (Redis-compatible)2
collect-serverregistry.flowkat.dev/flowkat/collect-serverJava 8 (Corretto)3
tx-mining-apiregistry.flowkat.dev/flowkat/mining-serverSpring Boot 3.x, JDK 174
api-serverregistry.flowkat.dev/flowkat/api-serverJava 8 (Corretto)5
dashboard-serverregistry.flowkat.dev/flowkat/dashboard-serverJava 8, Spring Boot6
ui-serverregistry.flowkat.dev/flowkat/ui-serverNext.js, PM27

2. 핵심 환경변수

파라미터 테이블 (P0~P1)

파라미터타입기본값conf 키중요도설명
DEPLOYMENT_ENVStringproduction.env DEPLOYMENT_ENV필수배포 환경 (development/production/aircap/demo).
FLOWKAT_VERSIONString5.0.27.env FLOWKAT_VERSION필수Docker 이미지 버전 태그. 프로덕션에서 특정 버전 고정 필수.
POSTGRES_PASSWORDStringCHANGE_ME_IN_PRODUCTION.env POSTGRES_PASSWORD필수PostgreSQL 비밀번호. 프로덕션에서 반드시 변경.
NEXTAUTH_URLStringhttps://flowkat.example.com.env NEXTAUTH_URL필수인증 콜백 URL. 실제 접속 URL과 일치 필수.
NETWORK_MODE_COLLECTStringbridge.env NETWORK_MODE_COLLECT핵심Collect Server 네트워크 모드. docker-compose 기본값은 bridge. prod .env에서 host로 오버라이드한다.
RESTART_POLICYStringunless-stopped.env RESTART_POLICY핵심Docker restart 정책. 프로덕션 .env에서 always로 오버라이드.

공통

네트워크

환경변수기본값 (prod)설명
NETWORK_MODE_COLLECThostCollect Server 네트워크 모드. prod에서 host 모드 사용(라이선스 검증).
COLLECT_POSTGRES_HOST127.0.0.1XLog Plugin DB 접속 IP. bridge 모드에서는 172.17.0.1.

데이터베이스

환경변수기본값 (prod)설명
POSTGRES_DBtxminingPostgreSQL 데이터베이스명.
POSTGRES_USERtxminingPostgreSQL 사용자명.
POSTGRES_PASSWORDCHANGE_ME_IN_PRODUCTION프로덕션에서 반드시 변경.

인증/보안

환경변수기본값 (prod)설명
NEXTAUTH_URLhttps://flowkat.example.com인증 콜백 URL. 실제 접속 URL과 일치 필수.
USE_SECURE_COOKIEStrueHTTPS 환경에서 true. HTTP 환경에서는 false.
AUTH_TRUST_HOSTtrue리버스 프록시 뒤에서 호스트 신뢰.
CORS_ORIGINShttps://flowkat.example.comCORS 허용 도메인. 콤마 구분 복수 지정 가능.

TX-Mining

환경변수기본값 (prod)설명
TX_MINING_ENABLED(미설정)TX-Mining 기능 활성화 여부.
TXMINING_PROFILEprodSpring Boot 프로파일.
SENTRY_ADDRESShttp://127.0.0.1:6300알림 콜백 URL.

3. JVM 힙 설정 (환경별)

서비스DevelopmentProductionDemo
collect-server-Xmx1g -Xms512m-Xmx2g -Xms2g-Xmx512m -Xms256m
api-server-Xmx512m -Xms256m-Xmx1g -Xms1g-Xmx256m -Xms128m
dashboard-server-Xmx1g -Xms512m-Xmx2g -Xms1g-Xmx512m -Xms256m
tx-mining-api-Xmx512m -Xms256m-Xmx1g -Xms512m-Xmx512m -Xms256m
최소 총 메모리~3GB~7GB~1.5GB

4. 환경별 차이점

항목DevelopmentProductionAircap
NETWORK_MODE_COLLECTbridgehosthost
COLLECT_POSTGRES_HOST172.17.0.1127.0.0.1127.0.0.1
USE_SECURE_COOKIESfalsetruefalse
POSTGRES_PASSWORDtxminingCHANGE_ME_IN_PRODUCTIONCHANGE_ME_IN_PRODUCTION
NEXTAUTH_URLhttp://localhost:6300https://flowkat.example.comhttp://{서버IP}:6300

5. 설치 절차

# 1. 릴리즈 번들 압축 해제
tar -xzf flowkat-release-5.0.27.tar.gz

# 2. 이미지 로드
sh load-images.sh

# 3. 환경 설정 (대화형)
sh flowkat-env-setup.sh

# 4. 볼륨 초기화
sh flowkat-volume-manager.sh init

# 5. 서비스 시작
sh start-all.sh

# 6. 헬스체크
sh check-collect-server.sh
sh check-tx-mining.sh

6. 주의사항

상황주의 내용
POSTGRES_PASSWORD프로덕션에서 반드시 강력한 패스워드로 변경한다. 기본값은 보안 취약.
NETWORK_MODE_COLLECT=host호스트 네트워크 모드에서는 Collect Server가 호스트의 모든 포트에 직접 바인딩된다. 방화벽 설정 확인 필수.
bridge 모드 XLog Pluginbridge 모드에서 XLog Plugin이 PostgreSQL에 접속하려면 Docker 게이트웨이 IP(172.17.0.1)를 사용한다.
이미지 버전 고정프로덕션에서는 FLOWKAT_VERSION을 특정 버전으로 고정한다. latest 사용 금지.
net.ipv4.ip_forwardDocker bridge 네트워크는 net.ipv4.ip_forward=1이 필수이다. sysctl -w로 임시 설정한 경우 서버 재부팅 시 0으로 초기화되어 컨테이너 간 통신이 불가해진다. /etc/sysctl.confnet.ipv4.ip_forward=1을 영구 등록해야 한다. NetworkManager나 보안 강화 스크립트가 값을 덮어쓸 수 있으므로 grep -r "ip_forward" /etc/sysctl.d/로 간섭 여부도 확인한다.
POSTGRES_USER_ID 권한postgres와 valkey 컨테이너는 user: ${POSTGRES_USER_ID:-1000:1000}으로 실행된다. 일반 계정(non-root)으로 Docker를 기동할 때 볼륨 디렉토리의 UID가 컨테이너 실행 UID와 불일치하면 Permission denied 에러가 발생한다. .env에서 POSTGRES_USER_ID를 실제 기동 계정의 UID:GID로 맞추거나 chown <UID>:<GID> volumes/mining-server/postgres-data volumes/mining-server/valkey-data로 권한을 조정한다.

7. 관련 문서