この記事はM1Mac触ってみたの5日目のエントリです(3, 4日目は別ネタにするかスキップしますw)
MacBook Airが届いてセットアップができたので動作検証も兼ねて開発環境を整えて開発作業をしてみました。
最近自分でWebアプリを開発するときには、もっぱらDockerで環境構築をして仮想環境上で開発をすることが多いです。
特にDB周りはコンテナでまとめたほうが作り直しや掃除が簡単なので、めちゃめちゃ重宝してます。
そんなDockerですが、先日M1 Macで正式にサポートされるようになりました
これもあったのでM1のMacを買っても大丈夫だろうと革新をしていたわけです。
というわけで今回はM1 MacにDockerを入れて動かしてみたのでそのレビューです。
インストール
インストールは以下のURLからできます。
ダウンロードボタンにカーソルを当てると各OSに合わせたインストーラーを選択できるようになっているのでDownload for Mac - Apple Chip
を選択してダウンロードします。
ダウンロードしたインストーラでインストールします。
とりあえず動かしてみた
ダウンロードが終わり初回起動すると出てくるコマンドを実行してみます。
docker run -dp 80:80 docker/getting-started
最近正式にサポートされるようになってM1MacでDockerがちゃんと起動できるようになった!
— K.Miura (@k_miura_io) 2021年4月29日
俺的にはDockerが動けば無問題である。
VS CodeとiTermもセットアップできたしひとまず開発環境構築は整ったことになるだろう pic.twitter.com/zvzYoFqAiP
ブラウザでlocalhost
を開くとページがちゃんと開きました。
開発環境を構築してみた
以下のコンテナを組みわせてDjangoの環境構築を構築してみました。
本当はMySQLを使おうとしましたがAppleシリコンだとオプションを入れてセットアップしないといけないっぽいので面倒だと感じたのでAppleシリコンでも使えるmariadbで代用しました。
設定やポートはMySQLと同じものが使えたので良かったです。
構築はdocker-composeをつかってやってみました。
参考までにyamlファイルはこんな感じです。
version: '3' services: db: image: mariadb:10.1 ports: - "3306:3306" environment: MYSQL_DATABASE: app-db MYSQL_ROOT_USER: root MYSQL_ROOT_PASSWORD: admin TZ: 'Asia/Tokyo' app: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - ./app:/code ports: - "8000:8000" depends_on: - db
後、アプリ側のDockerfileはこんな感じです。
# syntax=docker/dockerfile:1 FROM python:3 ENV PYTHONUNBUFFERED=1 WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/
これらを用意してdocker-compose build
してからdocker-compose up
すると普通にアプリが起動できました。
ただ、これはDockerの挙動が原因かコンテナの挙動が原因かわかりませんが、アプリの動作が重く感じました。
リクエスト投げてもレスポンスが遅かったのが気になりました。
Djangoを使っているので仕方ないのかもしれませんね…
まぁあくまで開発環境なのでそこまで気にすることではないかと(と信じたい)