a2707d658e
Deploy momo-erp / deploy (push) Successful in 53s
호스트 바인드 마운트는 docker compose 가 root 소유로 자동 생성해 컨테이너 nextjs(uid 1001) 가 mkdir 불가. named volume(momo_data_storage) 은 Dockerfile 의 chown nextjs:nodejs 를 그대로 복제하여 권한 문제 사라짐. deploy.sh 의 host-side mkdir/chmod 도 더 이상 불필요하므로 제거.
42 lines
1.6 KiB
YAML
42 lines
1.6 KiB
YAML
# 운영 배포 (Traefik + momo.junggomoa.com)
|
|
# 대상 서버: 183.99.177.40 (Traefik v2.11 외부 네트워크 traefik-net 사용)
|
|
# 사용: docker compose -f docker-compose.prod.yml up -d --build
|
|
services:
|
|
momo-erp:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: momo-erp:latest
|
|
container_name: momo-erp
|
|
restart: always
|
|
env_file:
|
|
- .env.production
|
|
volumes:
|
|
# 업로드 이미지 영구 저장 — named volume 사용
|
|
# (호스트 바인드 마운트 시 root 소유로 자동 생성되어 nextjs uid 1001 의 mkdir 권한 부족.
|
|
# named volume 은 이미지의 /data_storage 디렉토리(Dockerfile 에서 chown nextjs:nodejs)를
|
|
# 볼륨 초기화 시 그대로 복제하므로 권한 문제 없음.)
|
|
- momo_data_storage:/data_storage
|
|
# 자가 배포: webhook 이 호스트의 deploy.sh 를 실행하기 위함
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ./scripts/deploy.sh:/deploy/deploy.sh:ro
|
|
# source 디렉토리를 컨테이너 안에서 git pull 하기 위해 호스트의 소스를 마운트
|
|
- $PWD:/deploy/source
|
|
networks:
|
|
- traefik-net
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=traefik-net
|
|
- traefik.http.routers.momo-erp.rule=Host(`momo.junggomoa.com`)
|
|
- traefik.http.routers.momo-erp.entrypoints=websecure,web
|
|
- traefik.http.routers.momo-erp.tls=true
|
|
- traefik.http.routers.momo-erp.tls.certresolver=le
|
|
- traefik.http.services.momo-erp.loadbalancer.server.port=3000
|
|
|
|
networks:
|
|
traefik-net:
|
|
external: true
|
|
|
|
volumes:
|
|
momo_data_storage:
|