LoginSignup
2
1

More than 1 year has passed since last update.

docker compose で localhost 以外のIPアドレスをする(MAC)

Last updated at Posted at 2021-09-05

会社では、laravel + postgres のプロジェクトがあり、今まで Homestad を使用していたが、M1 使用者が増えてきたので、Docker 化をする必要があった。

Docker はデフォルトで localhost が割り当てられる。
初めは、 nginx-proxy (リバースプロキシ)でポート番号をプロジェクトごとで分けて、対応しようと思った。

問題

プロジェクトごとでポートが被らないようにポート番号を考えるのがめんどくさい。
だからプロジェクト毎にIPアドレス割り当てようと考えた。

docker-compose.yaml
version: '3'

services:
    app:
        build: ./docker/app
        ports:
            - '${DOCKER_HOST:-127.0.0.1}:${APP_PORT:-80}:80'
        environment:
            VIRTUAL_HOST: 'domein.jp'
        volumes:
            - '.:/var/www/html'
        depends_on:
            - db
            - mailhog
        tty: true #永続起動する設定

    db:
        image: 'postgres:9.6'
        ports:
            - '${DOCKER_HOST:-127.0.0.1}:${DB_PORT:-5432}:5432'
        environment:
            PGPASSWORD: '${DB_PASSWORD:-secret}'
            POSTGRES_DB: '${DB_DATABASE}'
            POSTGRES_USER: '${DB_USERNAME}'
            POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
        volumes:
            - 'db:/var/lib/postgresql/data'
            - .:/laravel

    mailhog:
        image: 'mailhog/mailhog:latest'
        ports:
            - '${DOCKER_HOST}:8025:8025'

volumes:
    db:
.env
DOCKER_HOST=127.0.0.3

APP_PORT=80

DB_PORT=secret
DB_DATABASE=laravel
DB_USERNAME=postgres
DB_PASSWORD=secret

上記のように設定して、docker-composer up -d を実行したところ以下エラーが出た。

Error response from daemon: Ports are not available: listen tcp 127.0.0.3:8025: bind: can't assign requested address

解決方法

MAC OS ではデフォルトでは 127.*.*.* は使用できないらしい。

そのため、以下コマンドで使用できるようにする必要があった。

sudo ifconfig lo0 alias 127.0.0.3 up

.zshrc や config.fish などで起動時に有効にするようにすれば、毎回やる必要はなくなる。

.zshrc
for ((i=2;i<256;i++))
do
    sudo ifconfig lo0 alias 127.0.0.$i up
done
config.fish
for i in (seq 255); sudo ifconfig lo0 alias 127.0.0.$i up; end

関連

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1