DodoTransfer/docs/deployment-docker.md
2026-11-05 10:28:10 +09:00

2.6 KiB

Docker로 배포하기

도커 사용을 권장합니다. 이미지는 이 저장소의 Dockerfile로 빌드하며, 프론트엔드 빌드도 이미지 빌드 안에서 함께 이루어집니다. 서버에 Node.js를 따로 설치할 필요가 없습니다.

빠른 시작

git clone https://git.dodo-lab.kr/blue2rai/DodoTransfer.git
cd DodoTransfer
cp .env.example .env            # 두 비밀번호를 정해서 .env에 적습니다
docker compose -f compose.example.yaml up -d --build

compose.example.yaml은 이 프로젝트의 운영 예시입니다. 서버 환경에 맞게 복사해서 고쳐 쓰세요. 중요한 부분은 다음과 같습니다.

항목 설명
user: "1000:1000" 데이터 폴더 소유자의 uid/gid와 같아야 합니다.
ports: "127.0.0.1:3377:3000" 외부에 직접 열지 않고 같은 서버의 nginx만 접근하게 합니다.
env_file: .env 비밀번호는 compose 파일이 아니라 .env에 둡니다 (.env는 git에 올라가지 않습니다).
volumes: /data 업로드한 파일과 관리자 설정(이름, 로고)이 모두 여기에 저장됩니다. 컨테이너를 다시 만들어도 유지됩니다.

하위 경로(/sharing)로 서비스하기

PSITRANSFER_BASE_URL: "/sharing"으로 설정하면 모든 주소가 /sharing/ 아래로 옮겨갑니다. nginx는 경로를 그대로 넘기면 됩니다 (경로를 잘라내지 않습니다).

location /sharing/ {
  proxy_pass http://127.0.0.1:3377;
  proxy_http_version 1.1;
  proxy_buffering off;
  proxy_request_buffering off;
  proxy_set_header Host $http_host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  client_max_body_size 10m;      # 파일은 5MB 조각으로 올라갑니다
}

상태 확인

이미지에는 HEALTHCHECK가 들어 있습니다. 로그인이 필요 없는 <BASE_URL>/healthz가 ok로 답하면 정상입니다.

docker compose -f compose.example.yaml ps          # STATUS가 healthy
curl http://127.0.0.1:3377/sharing/healthz         # ok

업데이트

git pull
docker compose -f compose.example.yaml up -d --build

데이터(/data)는 그대로 유지됩니다. 이전 PsiTransfer가 저장한 파일과 비밀번호도 그대로 사용할 수 있습니다. (이전에 올린 파일에는 썸네일이 없어서 아이콘으로 표시됩니다.)

환경변수

모든 설정은 PSITRANSFER_ 접두사의 환경변수로 바꿀 수 있습니다. 목록은 configuration.md를 참고하세요.