まず、私はDockerにまったく慣れていないので、まだDockerエコシステムに慣れていないと言います。
私が実行しようとしているのは、プロジェクト全体のローカル開発環境で使用する_docker-composer.yml
_を作成することです。
私はすでに wp-local-docker を自分のWordPress=プロジェクトに使用していますが、異なる要件が付属する古いプロジェクトもあるので、自分で作成しました_docker-compose.yml
_。自分の_docker-compose.yml
_のコードは次のとおりです。
_version: "3.4"
services:
database:
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: appdb
MYSQL_USER: appuser
MYSQL_PASSWORD: password
volumes:
- $PWD/data/db:/var/lib/mysql
networks:
app_net:
ipv4_address: 192.168.50.10
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
links:
- database:mysql
ports:
- "8181:80"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: appuser
MYSQL_PASSWORD: password
PMA_Host: mysql
PMA_PORT: 3306
PMA_USER: appuser
PMA_PASSWORD: password
networks:
app_net:
ipv4_address: 192.168.50.11
web:
build: $PWD/ApachePHP
depends_on:
- database
links:
- database:mysql
- mailcatcher
ports:
- "8080:80"
- "443:443"
volumes:
- $PWD/www:/var/www/html
- $PWD/ApachePHP/000-default.conf:/etc/Apache2/sites-available/000-default.conf
environment:
- MYSQL_ROOT_PASSWORD=appuser
- MYSQL_ROOT_USER=password
networks:
app_net:
ipv4_address: 192.168.50.12
mailcatcher:
image: schickling/mailcatcher
ports:
- "1025:1025"
- "1080:1080"
environment:
MAILCATCHER_PORT: 1025
networks:
app_net:
ipv4_address: 192.168.50.13
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.50.0/24
_
ネットワークをインストールした理由は、データベースサーバーにアクセスしようとすると、ネットワークに関連するエラーが発生するためです。
長い調査の結果、volumes
サービスでdatabase
を使用すると、エラーが返されることがわかりました。試してみると、phpmyadmin
にアクセスしようとすると同じエラーが発生することがわかります。
繰り返しますが、長い調査の結果、ネットワークを設定すればvolumes
にdatabase
を使用できることがわかりました。
今、私が最初の走行をしたとき、これは魅力のように働きました。テストフォルダーでは、ホストフォルダーのパス_/data/db
_の下にデータベースファイルがありました
次に、_docker-compose stop
_コマンドを使用してdocker composeを停止し、次に_docker-compose.yml
_をコピーした別のフォルダーに移動して、_docker-compose up
_を実行しました。
残念ながら今回は次のエラーが発生しました:
Creating network "corfurealestatedch_app_net" with driver "bridge" ERROR: cannot create network 791b388ece09120f1138d48427969c23ded22c6fc73699b7f8c2c8e195b59586 (br-791b388ece09): conflicts with network a675c47764eba17e3338860f56512067df580cef31415906ec57fa3b64f3cdab (br-a675c47764eb): networks have overlapping IPv4
したがって、問題は、他のコンテナIPと競合することなく、ローカルプロジェクト全体で使用できるように_docker-compose.yml
_を設定できるかどうかです。
もちろん、プロジェクトごとに異なるIP範囲/サブネットを設定することはできますが、これはある程度の混乱を招く可能性があると考えています。
どのようにそれを修正できるかについてのアイデアはありますか?
ここで示したエラーから、Dockerがbr-791b388ece09という名前のブリッジドライバーを使用してネットワークを作成しようとしているように見えます。
したがって、最初に使用可能なネットワークを確認します。
$ docker network ls
IDがa675c47764ebのブリッジが表示された場合は、このサブネットを削除してから、同じサブネット上に新しいブリッジを作成してください。
$ docker network rm a675c47764eb
次に、Dockerセットアップを swarm に対して再実行します。ネットワークが正しく作成されます。
または、別のIPサブネットを使用できます。 192.168.50.xを192.168.51.xのようなものに置き換えます。これで問題も解決するはずです。
すべてのネットワークを一覧表示
$ip a
Br-a675c47764ebのブリッジが表示され、そのステータスがダウンしている場合は、削除します
$brctl delbr br-a675c47764eb
次に、Dockerを再起動します
$service docker restart
Docker-composeを再度実行する