67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
# Docker로 배포하기
|
|
|
|
도커 사용을 권장합니다. 이미지는 이 저장소의 `Dockerfile`로 빌드하며, 프론트엔드 빌드도 이미지 빌드 안에서
|
|
함께 이루어집니다. 서버에 Node.js를 따로 설치할 필요가 없습니다.
|
|
|
|
## 빠른 시작
|
|
|
|
```bash
|
|
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](../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는 경로를 그대로 넘기면 됩니다 (경로를 잘라내지 않습니다).
|
|
|
|
```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`로 답하면
|
|
정상입니다.
|
|
|
|
```bash
|
|
docker compose -f compose.example.yaml ps # STATUS가 healthy
|
|
curl http://127.0.0.1:3377/sharing/healthz # ok
|
|
```
|
|
|
|
## 업데이트
|
|
|
|
```bash
|
|
git pull
|
|
docker compose -f compose.example.yaml up -d --build
|
|
```
|
|
|
|
데이터(`/data`)는 그대로 유지됩니다. 이전 PsiTransfer가 저장한 파일과 비밀번호도 그대로 사용할 수 있습니다.
|
|
(이전에 올린 파일에는 썸네일이 없어서 아이콘으로 표시됩니다.)
|
|
|
|
## 환경변수
|
|
|
|
모든 설정은 `PSITRANSFER_` 접두사의 환경변수로 바꿀 수 있습니다. 목록은 [configuration.md](configuration.md)를
|
|
참고하세요.
|