はじめに
ローカル開発環境を構築するにあたり固定IPを設定し、hosts
ファイル を編集する必要があったため、その手順を備忘録として残します。
docker-compose.yml
に以下を追記する
- IPアドレスを固定する: ネットワーク(
networks
)を追加 - コンテナの
/etc/hosts
を編集する:extra_hosts
を追加
コンテナ起動後、各コンテナに入り固定IPが設定されているか, /etc/hosts
が編集されているか確認
# コンテナに入る
docker compose exec <コンテナ名> bash
# コンテナ内で以下コマンド実行
hostname -i
cat /etc/hosts
設定例
docker-compose.yml
services:
php:
container_name: php
build: ./docker/php
volumes:
- ./server:/var/www
networks:
app_net:
ipv4_address: 172.20.0.10 # phpコンテナに172.20.0.10を割り振る
extra_hosts:
- "example.com.local:172.20.0.20" # 172.20.0.20 example.com.localが追記される
nginx:
image: nginx
container_name: nginx
ports:
- "81:80"
networks:
app_net:
ipv4_address: 172.20.0.20 # nginxコンテナに172.20.0.20を割り振る
volumes:
- ./server:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:5.7
platform: linux/amd64
container_name: db-host
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --innodb-use-native-aio=0
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- "3307:3306"
networks:
app_net:
ipv4_address: 172.20.0.30 # dbコンテナに172.20.0.30を割り振る
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/24 # サブネットを設定