Skip to main content

프로젝트 관리

프로젝트 생성, 설정, 운영 모드 전환 방법을 설명합니다.

새 프로젝트 생성

1. 템플릿 복사

make create NAME=myproject

생성되는 구조:

workspace/myproject/
├── .env.example # 환경변수 템플릿
├── _docker/ # Docker 설정
│ ├── docker-compose.amd64.yml
│ ├── docker-compose.arm64.yml
│ └── conf/ # nginx, php, postgres 설정
└── web/ # Laravel 애플리케이션
└── app/Core/ # Core 모듈 (심볼릭 링크)

2. 환경변수 설정

# .env.example을 .env로 복사
make copy-env NAME=myproject

# 편집
vi workspace/myproject/.env

필수 설정 항목

# 프로젝트 식별
PROJECT_NAME=myproject

# 포트 설정 (make ports로 사용 중인 포트 확인)
APP_PORT=8082
DB_PORT=5434
REDIS_PORT=6381

# Platform Admin 계정 (보안 중요!)
PLATFORM_ADMIN_EMAIL=admin@yourcompany.com
PLATFORM_ADMIN_PASSWORD=SecureP@ssw0rd!
PLATFORM_ADMIN_NAME="System Admin"

# Laravel 기본 설정
APP_ENV=local
APP_DEBUG=true
APP_KEY= # make install 시 자동 생성
APP_URL=http://localhost:8082
기본 비밀번호 변경 필수

.env.example의 기본 비밀번호를 그대로 사용하면 보안 위험입니다. 반드시 변경하세요.

3. 초기 설치

make install NAME=myproject

install 명령어가 수행하는 작업:

  1. Docker 이미지 빌드
  2. 컨테이너 시작
  3. Composer/npm 의존성 설치
  4. APP_KEY 생성
  5. 마이그레이션 실행
  6. 시더 실행

4. 접속 확인

# 상태 확인
make status NAME=myproject

# 브라우저에서 접속
open http://localhost:8082/admin

포트 할당 규칙

여러 프로젝트를 동시에 실행하려면 포트가 겹치지 않아야 합니다.

포트 현황 확인

make ports

권장 포트 범위

용도범위예시
APP_PORT8080-81998080, 8081, 8082
DB_PORT5432-54995432, 5433, 5434
REDIS_PORT6379-63996379, 6380, 6381

예시: 3개 프로젝트

프로젝트APP_PORTDB_PORTREDIS_PORT
project-a808054326379
project-b808154336380
project-c808254346381

개발 모드 vs 운영 모드

Makefile은 live/ 심볼릭 링크 존재 여부로 모드를 자동 판별합니다.

make up NAME=myproject

└── live/myproject 심볼릭 링크 존재?
├── 없음 → 개발 모드 (workspace/ 직접 사용)
└── 있음 → 운영 모드 (releases/ 스냅샷 사용)

개발 모드 워크플로우

개발 환경에서 코드 변경이 즉시 반영됩니다.

# 1. 컨테이너 시작
make up NAME=myproject

# 2. 코드 수정 (IDE에서)
vi workspace/myproject/web/app/Http/Controllers/...

# 3. 재시작 (필요시)
make restart NAME=myproject

# 4. 로그 확인
make logs NAME=myproject

특징:

  • workspace/myproject/ 디렉토리 직접 마운트
  • 코드 변경 즉시 반영 (대부분의 경우)
  • PHP 코드 변경은 재시작 불필요
  • 설정 변경 시 make restart 필요

운영 모드 워크플로우

릴리즈 스냅샷을 사용하여 안정적인 배포를 보장합니다.

# 1. 운영 모드로 전환 (릴리즈 생성 + live 설정)
make live NAME=myproject

# 2. 컨테이너 시작
make up NAME=myproject

# 3. 코드 변경 후
make live NAME=myproject # 새 릴리즈 생성
make restart NAME=myproject # 재시작

# 4. 문제 발생 시 롤백
make rollback NAME=myproject

특징:

  • releases/myproject/{timestamp}/ 스냅샷 사용
  • 코드 변경은 make live 후에만 반영
  • 빠른 롤백 가능
  • storage/uploads는 workspace와 동기화

모드 전환

# 개발 → 운영
make live NAME=myproject # live 심볼릭 링크 생성

# 운영 → 개발
rm live/myproject # live 심볼릭 링크 삭제
make restart NAME=myproject # workspace 직접 사용

릴리즈 관리

릴리즈 구조

releases/
└── myproject/
├── 250110-1430/ # 릴리즈 스냅샷
│ ├── _docker/
│ ├── web/
│ ├── .env
│ └── RELEASE_INFO.txt
└── 250110-1500/ # 최신 릴리즈

live/
└── myproject → ../releases/myproject/250110-1500 # 심볼릭 링크

릴리즈 명령어

# 릴리즈 생성 (live 없이)
make release NAME=myproject

# 릴리즈 생성 + live 전환
make live NAME=myproject

# 릴리즈 목록 확인
make release-list NAME=myproject

# 특정 버전으로 전환
make live NAME=myproject DATETIME=250110-1430

# 이전 버전으로 롤백
make rollback NAME=myproject

프로젝트 삭제

안전한 삭제 절차

# 1. 백업 (중요!)
make backup NAME=myproject

# 2. 컨테이너 중지
make down NAME=myproject

# 3. 데이터 삭제 (선택)
make clean-data NAME=myproject

# 4. 소스 삭제 (수동)
rm -rf workspace/myproject
rm -rf releases/myproject
rm -f live/myproject

완전 초기화 (데이터 포함)

make reset NAME=myproject
복구 불가

make reset은 모든 데이터를 영구 삭제합니다. 백업 후 실행하세요.


관련 문서