macOS(amd64)とLinuxでいい感じにdocker-compose.ymlを分けたい

macOS(amd64)とLinuxでいい感じにdocker-compose.ymlを分けたい

macOS から Linux に引っ越してきてしばらく経つわけですが、バックエンドの開発環境用の docker-compose.yml をわけたいのです。理由は

envsreasons
macOS(amd64)docker-sync を使って volume を mount する
Linuxdocker-sync 不要

だからです。なので今まで通り macOS で開発する人はそのままで、 Linux で開発する人は別に docker-compose-linux.yml を用意してあげて、 README.md にも使い方を追記しておけばいいのではないか?と思いました。

docker-compose.yml (macOS用)

version: "3"
services:
  php:
    container_name: "my_api"
    :
    volumes:
      - "sync-volume:/var/www/html"
  :
volumes:
  sync-volume:
    external: true

docker-compose-linux.yml

version: "3"
services:
  php:
    container_name: "my_api"
    :
    volumes:
-     - "sync-volume:/var/www/html"
+     - "./:/var/www/html"
  :
- volumes:
-   sync-volume:
-     external: true

README.md

以下の使い方を説明する。

環境変数設定

# macOS users
export DOCKER_COMPOSE_YML="docker-compose.yml"
# Linux users
export DOCKER_COMPOSE_YML="docker-compose-linux.yml"

docker-compose up を実行する際

- docker-compose -f $DOCKER_COMPOSE_YML up -d

これでよかろう?

番外編

VSCode の PHP とかのプラグインの設定で PHP の path が必要で PHP をインストールしていないから container の PHP に path を通したくなった。以下でできた。

/usr/local/bin/php

PHP インストールしていないので新規作成(のはず

my_api の部分は docker-compose.ymlcontainer_name と同じにしてください。

path=$(printf '%s\n' "${PWD##*/}")
command="docker exec my_api php "$@""
echo "Running php on docker my_api"
$command

実行権限を付与する

sudo chmod +x /usr/local/bin/php

各種 PHP プラグインの path を設定する

以下で設定する。

/usr/local/bin/php

他に PHP インストールしてて、違う path を使いたい場合は /opt/.../php とかを使えばいいんじゃないかと思います。

こんな感じで本日は終わり。そんじゃまた。