ひとメモ

主にプログラミングのメモ

Dockerイメージのベースをubuntuからalpineに変えてビルドを高速化する

alpineにすると軽くなると聞いた

↓のwebアプリを作成する際、環境構築にDockerを使っていて、HerokuへのデプロイもDockerごと(?)上げています。
些細な変更をしただけでもビルドにいちいちとても時間がかかっていたので、なるべく速くビルドができないかと軽量化を図りました。

hwhw.hatenablog.com

結果

ubuntuベース 635MB

alpineベース  244MB

391MBの減量に成功

Herokuへのデプロイも少しだけ速くなったような気がします。(計ってないのでわからない)
なおDockerfileの書き方はよくわかっていないので、効率の悪いやり方になってるかもしれません。ご了承ください。

変更点

  • apt installが使えないので、apk addというコマンドを使用します。
  • パッケージの名前を変えないとエラーが起きたりします。python3-pippy-pip など。
  • psycopg2(postgresqlを使うためのパッケージ?)をrequirements.txtに入れていましたが、エラーが起きるので調べた結果apk addのところにpy-psycopg2を追加したら動きました。

Dockerfile変更前

RUN mkdir /app

COPY src/requirements.txt /app
COPY ./src /app/src
COPY . /app

WORKDIR /app/src



RUN apt update && apt install python3 python3-pip vim sqlite3 sudo -y
RUN sudo apt install python-dev libpq-dev -y
RUN pip3 install -r requirements.txt




CMD ["python3", "app.py"]

Dockerfile変更後

RUN mkdir /app

COPY src/requirements.txt /app
COPY ./src /app/src
COPY . /app

WORKDIR /app/src



RUN apk add --update python3 py-pip vim sqlite sudo
RUN sudo apk add python3-dev postgresql-dev py-psycopg2
RUN pip3 install --upgrade -r requirements.txt




CMD ["python3", "app.py"]