未分類

M1 MacでのDocker Preview版のインストールから使い方まで(2021年3月)

備忘録を兼ね、M1版MacでのDockerの使い方を記録しておきます。

環境

  • Macbook Air M1(BigSur)
  • ARM版 Docker Preview
  • 作りたいもの:Wordpressの開発環境

Dockerとは(初心者視点での解釈)

Dockerとは、PC内に仮想的にLAMPでの開発環境を作るもの(もちろんLAMPに限らずともよい)。
VirtualboxのようにOS自体をインストールしてそのイメージを管理するのとはちょっと違うと思う。
Dockerという仮想環境管理ツールが専用のサーバーイメージ・ミドルウェアを組み合わせてコンテナというものを作ってくれて、それを起動することでPC内に環境を構築するような感じでした。

サーバーにCLIからいろいろミドルウェアやプラグインを入れて開発環境立てるにはもっと学習しないといけないけど、Web制作(WPなど)のみなら下記で十分と思われます。

  • Dockerをインストール
  • 開発用ディレクトリをローカル内に作成
  • 「docker-compose.yml」に立てたい環境を宣言(ここが奥深いと思われる)
  • ターミナルからコンテナ立ち上げ

Dockerインストール

アプリダウンロードは下記からいけます。

Macでのアプリインストール手順は割愛。普通にインストールすればいいです。
Rosettaのインストールが必要かもしれないといった記載がありましたが、しなくても普通に立ち上がりました。
必要な場合は、ターミナルで下記コマンド実行するのみ。

~ % softwareupdate --install-rosetta

起動しても立ち上がらない場合、自分はファイアウォールをオフにしてDocker再起動(DockerアイコンからQuit→起動)すれば立ち上がりました。
関連記事↓

開発用(作業用)ディレクトリ準備

ディレクトリの準備

今回はWordpressをインストールしようと思うので、下記のような構成。
自分は、/Users/ユーザー名/dev/開発環境名 というディレクトリ・ファイル配下に作成しました。

/Users/ユーザー名/dev/開発環境名
 └html
 └php
 └mysql
 └php.ini //中身は空
docker-compose.yml の作成

docker-compose.yml は、どういったコンテナを作るかの定義をするファイルらしい。

~ % cd /Users/ユーザー名/dev/開発環境名 
~ % vi docker-compose.yml //ターミナルでやらなくてもいい

version: '3'

services:
  mariadb:
    image: mariadb
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
  php:
    build: ./php
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8081:80
    depends_on:
      - mariadb

以下、「docker-compose.yml」の中身の解説。

version: '3' //固定でよいと思われる。

services: //ここからコンテナ達の定義
  mariadb: //ここからDBの定義開始
    image: mariadb //DBとしてMariaDBを採用。MySQLはARM版が無いらしい?
    volumes: //場所の定義
      - ./mysql:/var/lib/mysql //:左側がローカルの場所、右側がサーバー側としての場所。
    ports: //ポート転送定義
      - 3306:3306 //:左側がローカルポート、右側が仮想側ポート。ローカルで直接DB開いてなければこれで。
    environment: //DBの設定周り
      - MYSQL_ROOT_PASSWORD=root //rootパスワード。
      - MYSQL_DATABASE=test    //テスト用DB名
      - MYSQL_USER=test      //ユーザー名
      - MYSQL_PASSWORD=test    //パスワード
  php: //ここからWebサーバーの定義開始
    build: ./php //ローカルサーバーを指定。
    volumes: //場所の定義
      - ./php.ini:/usr/local/etc/php/php.ini //php.iniの置き場。左がローカル、右がサーバー側。
      - ./html:/var/www/html //ドキュメントルートの場所。左がローカル、右がサーバー側。
    ports: //ポート転送定義。
      - 8081:80 //左がローカル、右がサーバー側。この場合は localhost:8081 でアクセス可。
    depends_on: //ちょっとよくわからない。
      - mariadb //DBサーバーとして定義した名前をそのまま使う。
Dockerfile の作成

Dockerファイルはコンテナを立ち上げる際に他のミドルウェアやプラグインをインストールしたい際にapt-getなどを記載しておくとインストールしてくれたり、ファイル移動したい場合にmvなど記載しておくとそのとおりの状態にしてコンテナを立ち上げてくれるらしい。

~ % cd /Users/ユーザー名/dev/開発環境名 //すでに移動済みですが一応記載。
~ % vi ./php/Dockerfile //Webサーバー側の調整をする場合はここにDockerfileをおけばいいらしい。
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libonig-dev && \
  docker-php-ext-install pdo_mysql mysqli mbstring

以下、「Dockerfile」の中身の解説。

FROM php:7.4-apache //https://hub.docker.com/_/php ここからイメージを引っ張ってきているらしい。Wordpressのアプリイメージもあるので、直接Wordpressいれてもいいのかも。
RUN apt-get update && apt-get install -y libonig-dev && \
  docker-php-ext-install pdo_mysql mysqli mbstring
 //ベースはDebianになるっぽいので、apt-getで必要なモジュール達を入れておく。

php.iniは、作りたい環境に合わせて記述したらいいようです。

Docker立ち上げ

ここまできたらあとは立ち上げるだけ。
基本的にすべてターミナルでやります。(GUIもありますがよくわからなかったので。。。)

~ % cd /Users/ユーザー名/dev/開発環境名 //すでに移動済みですが一応記載。
~ % docker-compose up -d //-dをつけるとバックグラウンドでコンテナ立ち上げできるみたいです。

あとはブラウザから localhost:8081 にアクセスすれば、Dockerで仮想環境立ち上がってると思います。

WordPressインストール

先程作ったhtmlディレクトリに、Wordpressファイル置きます。
.htaccessの修正がめんどくさい手間だったので、自分はWordpressの中身をごっそりhtml直下に配置。