Files
sori.studio/docs/deploy.md

4.2 KiB

배포 가이드

현재 프로젝트는 Nuxt 3 초기 스캐폴딩 상태다. Docker 설정은 파일 기준 초안이 있으며 운영 DB 확정 후 NAS에서 검증한다.

빌드 유형

유형 명령어 용도
개발 npm run dev 로컬 테스트, 개발 서버
프로덕션 npm run build NAS 배포, 운영 서버

npm run dev는 프로젝트 전용 실행 스크립트를 통해 Localhost, Local IP, Admin, Tailwind Viewer 링크만 요약 출력한다.


로컬 개발

필수 조건

  • Node.js 22 LTS 권장
  • npm 9+
  • 개발 DB

실행 단계

# 프로젝트 클론
git clone https://git.sori.studio/zenn/sori.studio.git

# 디렉토리 이동
cd sori.studio

# 의존성 설치
npm install

# 개발 환경 변수 설정
# .env.development는 Git에 올리지 않는 로컬 전용 파일
# 새로 만들 때는 .env.example을 복사한 뒤 비밀번호를 랜덤 값으로 교체
cp .env.example .env.development
openssl rand -hex 32
# 로컬 DB 컨테이너를 호스트에서 접근할 때는 127.0.0.1:43119 사용

# 개발 서버 실행 (127.0.0.1:43117)
npm run dev

로컬 개발 DB

로컬 개발 DB는 Docker Compose의 sori-studio-db 서비스만 실행한다.

# Docker daemon 시작
colima start

# 개발 DB 컨테이너 실행
ENV_FILE=.env.development docker compose --env-file .env.development up -d sori-studio-db

# 개발 DB 마이그레이션 실행
npm run db:migrate:dev

# DB 준비 상태 확인
docker exec sori-studio-db pg_isready -U sori_studio -d sori_studio

# 시드 데이터 확인
docker exec sori-studio-db psql -U sori_studio -d sori_studio -c 'SELECT count(*) AS posts_count FROM posts;'

확인 주소


UGREEN NAS Docker 배포

Dockerfile과 docker-compose 설정은 초안이며 NAS 운영 환경에서는 아직 검증 전이다.

SSH 접속

ssh [NAS_IP]

프로젝트 설치

# 프로젝트 디렉토리로 이동
cd /volume1/docker/sori.studio

# 프로젝트 클론
git clone https://git.sori.studio/zenn/sori.studio.git

# 디렉토리 이동
cd sori.studio

# 운영 환경 변수 설정
# .env.production은 Git에 올리지 않는 운영 전용 파일
cp .env.example .env.production
# .env.production 파일에 운영 DB 연결 정보, 운영 전용 랜덤 비밀번호, APP_PORT=43118 입력
# Docker 내부 앱에서 PostgreSQL에 접근할 때는 sori-studio-db:5432 사용

# Docker 빌드 및 실행
docker compose --env-file .env.production up -d

프로덕션 빌드 (NAS에서)

# 프로덕션 빌드
npm run build

# 또는 Docker로 빌드
docker build -t sori.studio:latest .
docker run -d -p 3000:3000 sori.studio:latest

포트

  • 로컬 개발: 43117
  • NAS Docker 외부: 43118
  • 컨테이너 내부: 3000
  • PostgreSQL 외부: 43119
  • HTTPS: 3001 (SSL 설정 시)

데이터베이스

  • 로컬 개발: .env.developmentDATABASE_URL
  • NAS 운영: .env.productionDATABASE_URL
  • 로컬 개발 예시: postgres://sori_studio:비밀번호@127.0.0.1:43119/sori_studio
  • NAS Docker 예시: postgres://sori_studio:비밀번호@sori-studio-db:5432/sori_studio
  • .env.example에는 실제 비밀번호나 개인 이메일을 기록하지 않음
  • 개발/운영 DB 비밀번호와 관리자 비밀번호는 서로 다른 랜덤 값을 사용
  • 개발 DB와 운영 DB는 반드시 별도 인스턴스 또는 별도 데이터베이스로 분리
  • 운영 DB는 로컬 개발 서버에서 직접 연결하지 않음
  • 관리 도구: CloudBeaver 등으로 추후 연결 가능하게 설계
  • NAS Docker 배포 시 PostgreSQL 초기 스키마는 db/migrations/의 SQL로 생성
  • 로컬 개발 Docker Compose 실행 시 ENV_FILE=.env.development--env-file .env.development를 함께 사용
  • 로컬 개발 DB 마이그레이션은 npm run db:migrate:dev로 실행

사용자 액션 필요 항목

  • NAS SSH 접속 주소 확인.
  • NAS 프로젝트 루트 경로 확정.
  • 운영 DB 이름, 계정, 권한 확정.
  • 도메인 sori.studio의 NAS 연결 방식 확정.