53 lines
1.8 KiB
YAML
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"
|