Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev...

shin1x1
December 21, 2021

Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era

shin1x1

December 21, 2021
Tweet

More Decks by shin1x1

Other Decks in Programming

Transcript

  1. Mac アプリの種類 Intel Mac 用 (x86_64) Apple Silicon Mac(M1 Mac)

    用(aarch64) Universal x86_64 と aarch64 アプリが同梱 いずれも Apple Silicon Mac で動作 x86_64 は Rosseta 2 により aarch64 に自動変換して動作 6
  2. file コマンドで確認 Apple Silicon Mac 用(aarch64) $ file Docker Docker:

    Mach-O 64-bit executable arm64 Universal $ file iTerm2 iTerm2 (for architecture x86_64): Mach-O 64-bit executable x86_64 iTerm2 (for architecture arm64): Mach-O 64-bit executable arm64 Intel Mac 用 (x86_64) $ file Dropbox Dropbox: Mach-O 64-bit executable x86_64 7
  3. Homebrew Apple Silicon Mac(3.0.0) + Monterey(3.3.0) 対応済 aarch64 アプリは、 /opt/homebrew

    にインストールされる 環境変数 PATH に /opt/homebrew/bin /opt/homebrew/sbin を追加 x86_64 アプリは、 /usr/local 9
  4. Apple Silicon Mac + Mac アプリ 全く問題無い! 2021/12 時点で多くのアプリで Apple

    Silion 対応が行われている Universal 版が多い印象 ダウンロード選択肢が無いからといって Apple Silicon 未対応ではない x86_64 アプリのみでも、Rosetta 2 で普通に動作する 今のところアプリで困ったことは無い 10
  5. Apple Silion Mac + Vagrant + VirtualBox Vagrant は動作する (x86_64)

    現時点では VirtulBox は Apple Silion Mac で動作しない Apple Silion サポートについてオフィシャルには情報が無い 12
  6. Apple Silion Mac + Vagrant + VMWare Fusion VMware Fusion

    for Apple silicon Public Tech Preview https://blogs.vmware.com/teamfusion/2021/09/fusion-for-m1-public-tech- preview-now-available.html Vagrant を使いたいなら選択肢の一つ 有償 13
  7. Apple Silicon Mac + Vagant VirtualBox が動作しないので厳しい Apple Silicon Mac

    以前に Docker 環境を利用していたので、個人的にはモチベーシ ョンはあまりない このタイミングで Docker に移行するプロジェクトもいくつかある 14
  8. Apple Silion Mac + Docker Docker Desktop アプリは Apple Silion

    対応済 Docker イメージにも種類がある linux/amd64: Intel Mac で利用するイメージ linux/arm64: Apple Silion Mac で利用するイメージ Docker Desktop では amd64 イメージも動作する QEMU によるエミュレート 動作は遅くなったり、挙動が不安になるケースも 特に JVM をランタイムとしたイメージは要注意 (arm64 は問題無し) 16
  9. Docker イメージの対応状況 オフィシャルイメージは amd64 / arm64 両対応が多い php, postgres, redis,

    nginx, composer 等 mysql は amd64 のみ mysql/mysql の 8.0 は arm64 イメージあり 独自ビルドイメージは amd64 のみが多い傾向 これまで amd64 のみ利用する場面が多かったので 17
  10. docker コマンド, Dockefile, docker-compose.yml docker コマンド操作は基本そのまま Dockerfile や docker-compose.yml はそのままで

    OK CPU アーキテクチャ固有の情報以外 Docker イメージ amd64/arm64: Intel=amd64 / Apple Silicon=arm64 が動く amd64 のみ: Intel=amd64 / Apple Silicon=amd64 が動く いかに 両サポートイメージを作るかがポイント 18
  11. Intel Mac と Apple Silicon Mac との共存 案1. Mac で利用するイメージは、自身の

    Mac でビルド Intel Mac では amd64、Apple Silicon Mac では arm64 をビルド services: php: build: ./docker/php # docker/php/Dockerfile をビルド 案2. Docker Buildx でマルチアーキテクチャビルドして共有 GitHub Actions 上でのマルチアーキテクチャビルド例 https://blog.shin1x1.com/entry/docker-multi-arch-build-on-github-actions 19
  12. amd64/arm64 イメージ速度差 M1 MacBook Pro では arm64 イメージの方が速い phpunit 実行時間

    (php + postgres) M1 MBP(php: arm64): 2.36 minutes M1 MBP(php: amd64): 4.90 minutes [参考] Intel MBP(php: amd64) : 2.23 minutes 20
  13. arm64 で発生: postgres イメージ接続遅延 php(arm64) + postgres(arm64) で発生 時折、PHP から

    PostgreSQL への接続に 5 秒かかる現象 pg_connect / PDO ともに php:X-apache-buster ベースで発生 php:X-apache-bullseys や amazonlinux:2 では発生せず 21
  14. Apple Silicon Mac + Docker 基本は arm64 イメージを使えば問題無し amd64 はうまく動かない場合がある(ex.

    JVM 系) amd64 と arm64 両イメージを用意しておくとスムーズ チームで Intel Mac と Apple Silicon Mac が混在 22
  15. Apple Silicon Mac 時代の PHP 開発環境 2021 Mac アプリ +

    Docker で構成 マルチアーキテクチャ対応の Docker イメージを用意するのがポイント Mac だけではなく、本番環境含めたマルチアーキテクチャ時代に 23
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy