0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker 入門者のアウトプットAdvent Calendar 2024

Day 13

自作 WebApp のセットアップ超簡単にできて Docker すげぇって感じただけの随筆

Posted at

背景

少し前に、Python FastAPI で WebApp を作りました。

これを動作させる Dockerfile を作ってみたらめっちゃ良かった、というだけの話です。

Docker 無しのセットアップ手順

mozjpeg-webui を動かすには、mozjpeg の実行ファイルを /opt/mozjpeg/bin/ に置いておく必要があります。(正確には jpegtran さえあればいい。)

sudo apt install cmake nasm

# リポジトリ外の、どこか適当なディレクトリで
wget -O - https://github.com/mozilla/mozjpeg/archive/refs/tags/v4.1.1.tar.gz | tar -xzv -C ./
cd mozjpeg-4.1.1

mkdir build && cd build
cmake -G"Unix Makefiles" -DPNG_SUPPORTED=0 ../
sudo make -j5 install

それと、Python のパッケージを pip で入れる必要もあります。

# ここからリポジトリルートで
pip install -r assets/requirements.txt

これで起動および動作できます。

cd src
python3 main.py

バイナリのビルドもあって、セットアップは少々手間。

Docker を用いたら

Docker をめっちゃ雑に一言で言うと、「素早く仮想環境用意して、色々動かせるヤツ」です。「こういうのが用意されたこんな環境 (= Dockerfile 及び Docker イメージ)」を事前に用意しておけば、それを呼び出すだけでサッと専用マシン (= Docker コンテナ) 起動。

Docker の詳しい解説は山ほど出回っているので、ここではカット。

先のような手順を、すべて Dockerfile に示すことができます。

# mozjpeg building stage
FROM python:3.13-slim AS build

WORKDIR /home/build
RUN apt update
RUN apt install -y wget cmake nasm
RUN wget -O - https://github.com/mozilla/mozjpeg/archive/refs/tags/v4.1.1.tar.gz | tar -xz -C ./

WORKDIR /home/build/mozjpeg-4.1.1
RUN cmake -G"Unix Makefiles" -DPNG_SUPPORTED=0 ./
RUN make -j5 jpegtran-static
# Only jpegtran is necessary, then static linked executable is easy to setup


# Production deployment stage
FROM python:3.13-slim

WORKDIR /home/mozjpeg-webui
COPY --from=build /home/build/mozjpeg-4.1.1/jpegtran-static /opt/mozjpeg/bin/jpegtran
COPY assets/requirements.txt /home/mozjpeg-webui/requirements.txt
COPY src /home/mozjpeg-webui/src
RUN pip install -r requirements.txt

WORKDIR /home/mozjpeg-webui/src
CMD ["python3", "main.py"]

上のファイルさえあれば、ビルドして起動するのみ。打つコマンドはたったこれだけ。

docker build -t mozjpeg-webui .
docker run --rm -it -p 8000:8000 mozjpeg-webui

これら全てがコンテナ (仮想環境) 上で動作するので、実環境が汚れる心配も全くなし。何なら、apt 使える環境限定 (つまり Debian 系 Linux) だったところが、Docker さえあれば使用 OS 問わず使えるように!

おわり

多分、知ってる人からしたら「逆に何でやってなかったの?」と言われる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?