Instalasi Font di Docker

Ada kalanya suatu service / docker membutuhkan font dalam operasinya. Contohnya untuk service yang menangani template dokumen atau generate dokumen. Saya menjumpai kasus yang mana harus membuat microservice untuk download PDF dari template DOCX yang sudah disiapkan sebelumnya. Alhasil, tidak hanya dokumen saja, font-font yang digunakan dalam dokumen tersebut juga perlu disiapkan dalam environment server. Lalu, bagaimana cara instalasinya?

Dalam kasus ini, saya menggunakan dockerfile untuk menyiapkan service di Google Cloud Run. Mungkin kalau ada yang menggunakan platform lain ada perbedaan teknis / flownya. Selama Operating System yang digunakan dalam docker tersebut berjenis linux, Saya kira tulisan ini masih relevan untuk dijadikan referensi.

Ok untuk instalasi font di docker, kita bagi menjadi beberapa section. Pertama, kita mencoba menggunakan manual installation. Kedua, kita mencoba menggunakan package manager. Ketiga, kita bisa juga menggunakan docker repository yang telah siap untuk digunakan.

Manual Installation

Pada dasarnya sama dengan instalasi font pada Linux. Yaitu meletakan file *.ttf dan sejenisnya di folder `/usr/share/fonts/`. Sudah itu aja sih. Berikut ini contohnya:

1
2
3
FROM alpine:latest
WORKDIR /app
COPY /path/from/project/fonts.ttf /usr/share/fonts/

Selama file *.ttf diletakkan dalam folder /usr/share/fonts/ maka service tersebut dapat menggunakan resource font tersebut. Terlepas diletakkan secara cuma-cuma ataupun disimpan dalam subfolder dan terpisah-pisah.

Package Manager

Semisal Anda menggunakan package manager maka harus bisa memastikan fontnya tersedia. Menurut dokumentasi dari alpine tentang font kita bisa menginstall font dengan cara:

1
2
3
FROM alpine:latest
WORKDIR /app
RUN apk add terminus-font ttf-inconsolata ttf-dejavu font-bitstream-* font-noto font-noto-* ttf-font-awesome font-noto-extra

Docker Repository

Untuk docker repository ini ada dua pilihan. Menggunakan yang sudah ada, atau membuat repository sendiri. Tapi, ini yang saya contohkan yang tinggal pakai saja. Misalnya kita menggunakan dockernya milik deemetreeats11/alpine-google-fonts yang mana memuat beberapa google fonts (Roboto, Open Sans, Lato, dan Montserrat) semisal:

1
2
3
4
5
6
7
FROM deemetreeats11/alpine-google-fonts AS font_supply

# Kemudian kita pakai di stage berikutnya
FROM alpine:edge AS runtime

# ini kuncinya:
COPY --from=font_supply /usr/share/fonts/ /usr/share/fonts/

Okay, mungkin itu saja yang bisa saya dokumentasikan. Ini hanya sekelumit contoh tentang bagaimana memasangkan font di Linux Environment. Semoga bermanfaat.

https://hub.docker.com/r/deemetreeats11/alpine-google-fonts
https://wiki.alpinelinux.org/wiki/Fonts
https://medium.com/source-words/how-to-manually-install-update-and-uninstall-fonts-on-linux-a8d09a3853b0


Instalasi Font di Docker
https://reyzeal.com/2022/04/25/Instalasi-Font-di-Docker/
Author
Rey
Posted on
April 25, 2022
Licensed under