Files
Genesis_GameServer/docker-compose.yml
2026-09-04 01:44:59 +09:00

53 lines
1.8 KiB
YAML

# 리눅스 서버에서 한 번에 띄우기.
#
# cp .env.example .env # 값 채우고
# docker compose up -d --build
#
# 다시 배포할 때:
# git pull && docker compose up -d --build
#
# 업로드 폴더는 호스트의 ./uploads 로 빼 두었다.
# 컨테이너를 지우고 다시 만들어도 올려 둔 사진은 그대로 남는다.
services:
gameserver:
build:
context: .
dockerfile: Dockerfile
image: genesis-gameserver:latest
container_name: genesis
restart: unless-stopped
ports:
# 호스트 5281 → 컨테이너 8080
# 앞에 nginx 같은 리버스 프록시를 둔다면 "127.0.0.1:5281:8080" 으로 묶어
# 외부에서 직접 접근하지 못하게 하는 편이 낫다.
- "5281:8080"
environment:
ASPNETCORE_ENVIRONMENT: Production
# 환경변수가 appsettings.json 보다 우선한다. 비밀값은 여기(.env)로만 넣는다.
ConnectionStrings__DefaultConnection: ${DB_CONNECTION}
Portfolio__AdminPassword: ${ADMIN_PASSWORD}
Portfolio__MaxUploadBytes: ${MAX_UPLOAD_BYTES:-104857600}
volumes:
# 업로드된 사진. 이게 없으면 재배포 때 전부 사라진다.
# 호스트 폴더 소유자를 컨테이너의 app 사용자(UID 1654)로 맞춰야 쓰기가 된다:
# mkdir -p uploads && sudo chown -R 1654:1654 uploads
- ./uploads:/app/wwwroot/uploads
healthcheck:
# 포트폴리오 공개 API 가 응답하면 정상으로 본다.
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/api/portfolio/categories >/dev/null 2>&1 || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 40s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"