4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker Compose】固定IPの割りあてとhostsの編集

Posted at

はじめに

ローカル開発環境を構築するにあたり固定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        # サブネットを設定

参考

dockerのコンテナに固定IPを振る
docker Docs

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?