오늘도 한 뼘 더

[Docker] Dockerfile 이용해 wkhtmltopdf 설치하기 본문

DevOps & Infra/Docker

[Docker] Dockerfile 이용해 wkhtmltopdf 설치하기

나른한댕댕이🐶 2023. 1. 16. 13:44
728x90
반응형

  # 배경  

 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배포할 때마다 설치를 해줘야 하기 때문에 Dockerfile에 설치 명령어를 작성하여 Docker 컨테이너가 올라갈 때마다 설치가 될 수 있도록 해야 한다.

 

  # 기존의 Dockerfile 변경  

기존의 Dockerfile은 alpine 환경으로 올라가도록 작성되어 있었다. 

근데 alpine 3.14버전 이상부터 wkhtmltopdf을 지원하지 않아 alpine이 아닌 ubuntu를 사용해야 했다. 

 

  # Dockerfile 작성   

FROM golang:1.19 AS builder
WORKDIR /go/src/test-service
COPY . .
RUN go mod download
RUN go install

# syntax=docker/dockerfile:1
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y tzdata
RUN apt install -y wget
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb \
    && apt install -y ./wkhtmltox_0.12.6-1.bionic_amd64.deb

WORKDIR /go/bin/
EXPOSE 1000

CMD ["./test-service"]

 

  ## 이후 보안해봐야 할 부분  

지금은 golang이랑 맞춘 버전의 alpine이 wkhtmltopdf를 지원하지 않아 ubuntu이미지를 사용했는데 ubuntu 이미지를 사용하니 docker image의 용량이 몇 배 커지는 상황이 발생하였다. 

이 부분은 테스트용으로 올라가기 때문에 당장의 큰 문제는 없지만 이렇게 되면 배포 속도에도 영향을 미치지 않을까 라는 생각을 해본다. 추후에 ubuntu가 아닌 방법으로 올릴 수 있는지 확인 작업이 필요할 것 같다.

728x90
반응형
Comments