Skip to content

DigitalOcean 는 애플리케이션 빌드 및 배포를 위한 다양한 서비스를 제공하는 클라우드 플랫폼입니다.

이 가이드에서는 Dockerfile 을 사용하여 Bun HTTP 서버를 DigitalOcean 에 배포합니다.

NOTE

계속하기 전에 다음이 준비되어 있는지 확인하세요:

새 DigitalOcean Container Registry 만들기

Docker 이미지를 저장할 새 Container Registry 를 만듭니다.

DigitalOcean 대시보드에서

DigitalOcean 대시보드에서 Container Registry 로 이동하고 새 레지스트리의 세부 정보를 입력합니다.

세부 정보가 올바른지 확인한 다음 Create Registry 를 클릭합니다.

DigitalOcean CLI 를 통해
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

DigitalOcean registry dashboard 에서 새 레지스트리를 확인할 수 있습니다:

새 Dockerfile 만들기

프로젝트가 있는 디렉터리에 있는지 확인한 후 프로젝트 루트에 새 Dockerfile 을 만듭니다. 이 파일에는 컨테이너를 초기화하고 로컬 프로젝트 파일을 복사하고 종속성을 설치하고 애플리케이션을 시작하는 지침이 포함되어 있습니다.

docker
# 애플리케이션 실행을 위한 공식 Bun 이미지 사용
FROM oven/bun:debian

# 작업 디렉터리를 `/app` 으로 설정
WORKDIR /app

# package.json 과 bun.lock 을 컨테이너에 복사
COPY package.json bun.lock ./

# 종속성 설치
RUN bun install --production --frozen-lockfile

# 나머지 애플리케이션을 컨테이너에 복사
COPY . .

# 포트 노출 (DigitalOcean 이 PORT 환경 변수를 설정함)
EXPOSE 8080

# 애플리케이션 실행
CMD ["bun", "index.ts"]

NOTE

시작 명령이 애플리케이션의 진입점에 해당하는지 확인하세요. `package.json` 에 시작 스크립트가 있는 경우 `CMD ["bun", "run", "start"]` 를 사용할 수도 있습니다.

이 이미지는 종속성을 설치하고 컨테이너 내에서 Bun 으로 앱을 실행합니다. 앱에 종속성이 없는 경우 RUN bun install --production --frozen-lockfile 라인을 생략할 수 있습니다.

프로젝트 루트에 새 .dockerignore 파일을 만듭니다. 이 파일에는 node_modules 와 같이 컨테이너 이미지에서 제외 해야 하는 파일과 디렉터리가 포함되어 있습니다. 이렇게 하면 빌드가 더 빠르고 작아집니다:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 제외하려는 기타 파일 또는 디렉터리

Docker 를 DigitalOcean registry 로 인증하기

Docker 이미지를 빌드하고 푸시하기 전에 Docker를 DigitalOcean Container Registry 로 인증합니다:

bash
doctl registry login
txt
Successfully authenticated with registry.digitalocean.com

NOTE

이 명령은 DigitalOcean 자격 증명을 사용하여 Docker를 DigitalOcean 의 registry 로 인증합니다. 이 단계가 없으면 빌드 및 푸시 명령이 401 인증 오류로 실패합니다.

Docker 이미지를 DigitalOcean registry 로 빌드하고 푸시하기

Dockerfile 이 있는 디렉터리에 있는지 확인한 후 Docker 이미지를 빌드하고 DigitalOcean registry 로 한 번의 명령으로 푸시합니다:

bash
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .

NOTE

ARM Mac(M1/M2) 에서 빌드하는 경우 DigitalOcean 인프라와의 호환성을 보장하기 위해 `--platform=linux/amd64` 와 함께 `docker buildx` 를 사용해야 합니다. 플랫폼 플래그 없이 `docker build` 를 사용하면 DigitalOcean 에서 실행되지 않는 ARM64 이미지가 생성됩니다.

이미지가 푸시되면 DigitalOcean registry dashboard 에서 확인할 수 있습니다:

새 DigitalOcean App Platform 프로젝트 만들기

DigitalOcean 대시보드에서 App Platform > Create App 으로 이동합니다. 컨테이너 이미지에서 직접 프로젝트를 생성할 수 있습니다.

세부 정보가 올바른지 확인한 다음 Next 를 클릭합니다.

리소스 설정을 검토하고 구성한 다음 Create app 을 클릭합니다.

실행 중인 애플리케이션 방문하기

🥳 앱이 이제 실행되었습니다! 앱이 생성되면 공개 URL 과 함께 App Platform 대시보드에서 확인할 수 있습니다.

Bun by www.bunjs.com.cn 편집