MongoDBをDockerで構築したときに苦戦したので、とりあえずうまくいった内容をメモ代わりに残す
今回は以下の理由により、事前ネットワークを準備し、externalネットワークとして設定している
- 複数のdocker composeを使いたい
- またそれらのコンテナ間で通信をしたい
事前にネットワーク作成
docker network create my_network
version: "3.1"
services:
mongodb:
image: mongo
container_name: mongodb
restart: always
ports:
- 27017:27017
volumes:
- mongoDataStore:/data/db
- ./configdb:/data/configdb
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD}
networks:
- my_network
mongo-express:
image: mongo-express
container_name: mongo-express
restart: always
ports:
- 7543:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGODB_USERNAME}
ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGODB_PASSWORD}
ME_CONFIG_MONGODB_URL: mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@mongodb:27017/
ME_CONFIG_BASICAUTH_USERNAME: ${EXPRESS_USERNAME}
ME_CONFIG_BASICAUTH_PASSWORD: ${EXPRESS_PASSWORD}
networks:
- my_network
depends_on:
- mongodb
volumes:
mongoDataStore:
driver: local
networks:
my_network:
external: true
- 8081ポートがセキュリティソフトのTrellixと競合していたためportを変更している
- ネットの記事では
depends_on
を設定するだけでコンテナ間通信ができると書いてあったが、私の環境ではうまくいかなかったためME_CONFIG_
の値を色々書いている
環境変数はcomposeと同階層の.envに記載
.env
MONGODB_USERNAME = root
MONGODB_PASSWORD = password
EXPRESS_USERNAME = admin
EXPRESS_PASSWORD = password
環境変数にどのような値が入って実行されるかは、config
コマンドで確認できる
docker compose config
実行
dokcer compose up