Dockerイメージのベースをubuntuからalpineに変えてビルドを高速化する
alpineにすると軽くなると聞いた
↓のwebアプリを作成する際、環境構築にDockerを使っていて、HerokuへのデプロイもDockerごと(?)上げています。
些細な変更をしただけでもビルドにいちいちとても時間がかかっていたので、なるべく速くビルドができないかと軽量化を図りました。
結果
ubuntuベース 635MB
↓
alpineベース 244MB
391MBの減量に成功
Herokuへのデプロイも少しだけ速くなったような気がします。(計ってないのでわからない)
なおDockerfileの書き方はよくわかっていないので、効率の悪いやり方になってるかもしれません。ご了承ください。
変更点
apt install
が使えないので、apk add
というコマンドを使用します。- パッケージの名前を変えないとエラーが起きたりします。
python3-pip
→py-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"]