Docker를 이용한 Deno 배포

디노도 엄연한 서버를 올릴 수 있는 기능이 있기 때문에, 이를 서비스로 해보려는 시도는 많다. 그 중 Docker를 이용하여, Container로 돌려보려는 시도도 있을 것이다.

Node는 Docker에 이용하기 아주 편한 이미지를 제공해준다. 그리고 심각한 정도의 버전 차이가 아니면 사용하기도 매우 편하다. 하지만 디노는 그렇게 친절한 이미지를 제공해주지 못한다. 적어도 나의 경험에서는…

Deno가 제공하는 이미지는 포기

디노를 배포할때 가장 문제가 됬던 점은 std 버전이었다. 잦은 업데이트로 API의 변화가 매우 많다. 해당 모듈의 버전과 디노 이미지 버전의 차이로 언제나 문제가 발생했다.

Docker에는 다양한 환경의 이미지를 제공한다. 이것을 활용해서 나는 디노가 아닌 우분투를 활용하기로 했다. 어차피 독립적인 Container인 상태에서 그 안에 Deno를 나에게 맞는 버전을 설치하고, 사용한다면 이론상 에러는 발생하지 않았다.

그러면 해보자

우선 이미지는 우분투를 활용한다.

FROM ubuntu

WORKDIR /app

EXPOSE 3000

ENV TZ=Asia/Seoul
ENV PORT=3000

COPY --from=denoland/deno:bin /deno /usr/local/bin/deno
COPY deps.ts .
COPY . .

CMD ["deno", "run", "--unstable", "--allow-net", "--allow-read", "--allow-env", "--import-map=import_map.json", "server.ts"]

우분투를 이용한 Container에 디노를 가지고와 단순히 실행을 시키는 모습으로 구성했다.

이상한 점

Container를 구성 후 디노를 설치하고, 사용하는 것도 아니고… 애초에 구성을 할때 디노 이미지를 같이 가져오고 있다. 그러면 처음부터 해당 이미지를 활용하는 될 것 같은데 왜 안되는 것일까?

이 부분은 조금 더 알아보고, 고쳐야 하는 부분인 것 같다.