Skip to content

Commit

Permalink
fix: mediasoup 빌드 결과물을 캐시하도록 설정
Browse files Browse the repository at this point in the history
  • Loading branch information
Fixtar committed Jan 5, 2025
1 parent b96448c commit 39a4db5
Showing 1 changed file with 11 additions and 45 deletions.
56 changes: 11 additions & 45 deletions apps/media/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,70 +13,36 @@ ENV PNPM_HOME="/root/.local/share/pnpm"
ENV PATH="${PATH}:${PNPM_HOME}"

# 캐시 디렉토리 경로 설정
ENV PNPM_STORE_PATH="/pnpm/store"
ENV MEDIASOUP_CACHE_DIR="/mediasoup-cache"

# 2. Builder 단계
FROM base AS builder

# Turbo CLI 설치
RUN pnpm install -g turbo@^2.2.3

# PNPM 및 Turbo 캐시를 Docker 캐시 디렉토리에 연결
ARG PNPM_STORE_PATH=/pnpm/store
ARG MEDIASOUP_CACHE_DIR=/mediasoup-cache
ENV PNPM_STORE_PATH=${PNPM_STORE_PATH}
ARG MEDIASOUP_CACHE_DIR
ENV MEDIASOUP_CACHE_DIR=${MEDIASOUP_CACHE_DIR}

# 캐시 디렉토리 생성
RUN mkdir -p ${PNPM_STORE_PATH} ${MEDIASOUP_CACHE_DIR}

# 의존성 파일만 우선 복사하여 캐시 활용
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile && echo "Dependencies installed successfully"

# PNPM 및 Turbo 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH}

# 소스 파일 전체 복사
# 소스 파일 전체 복사 및 전체 빌드
COPY . .
RUN pnpm build && echo "Build completed successfully"

# mediasoup 빌드
RUN pnpm build:mediasoup --output ${MEDIASOUP_CACHE_DIR}
# 3. Mediasoup 빌드 결과 캐싱
RUN cp -r node_modules/.pnpm/mediasoup@*/node_modules/mediasoup ${MEDIASOUP_CACHE_DIR} && echo "Mediasoup cached successfully"

# Turbo Prune으로 최소화된 결과 생성
RUN turbo prune --scope=@app/media --docker

# 3. Runner 단계
# 4. Runner 단계
FROM base AS runner

# 작업 디렉토리 설정
WORKDIR /app

# PNPM 및 Turbo 캐시를 Docker 캐시 디렉토리에 연결
ARG PNPM_STORE_PATH=/pnpm/store
ARG MEDIASOUP_CACHE_DIR=/mediasoup-cache
ENV PNPM_STORE_PATH=${PNPM_STORE_PATH}
ENV MEDIASOUP_CACHE_DIR=${MEDIASOUP_CACHE_DIR}

# 캐시 디렉토리 생성
RUN mkdir -p ${PNPM_STORE_PATH} ${MEDIASOUP_CACHE_DIR}

# Turbo Prune 결과 복사
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml

# PNPM 및 Turbo 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH}

# 전체 소스 복사 및 빌드
COPY --from=builder /app/out/full/ .

# mediasoup 빌드 결과 사용
COPY --from=builder ${MEDIASOUP_CACHE_DIR}/build_output /app/apps/media/node_modules/.pnpm/[email protected]/node_modules/mediasoup
# 캐시된 mediasoup 빌드 결과물 복사
COPY --from=builder ${MEDIASOUP_CACHE_DIR} ./node_modules/mediasoup && echo "Mediasoup copied to runner"

# 환경 파일 복사
COPY --from=builder /app/apps/media/.env /app/apps/media/dist/.env
COPY --from=builder /app/apps/media/.env /app/.env
# 나머지 파일 복사 및 실행
COPY --from=builder /app .

# 포트 및 실행 환경 설정
EXPOSE 3002
Expand Down

0 comments on commit 39a4db5

Please sign in to comment.