LoginSignup
1
0

More than 1 year has passed since last update.

MongoDB を docker-compose で volume 使ったら mongo-express が動かなくなった

Posted at

現象

久しぶりに MongoDB 使おうとしたら以前使っていた docker-compose(mongo-express の方)が動かなくなっていた。

docker-compose.yml
version: "3.1"

services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: user
      MONGO_INITDB_ROOT_PASSWORD: secret
      MONGO_INITDB_DATABASE: app_marketing
    ports:
      - 27017:27017
    volumes:
      - ./configdb:/data/configdb
      - mongoDataStore:/data/db

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: user
      ME_CONFIG_MONGODB_ADMINPASSWORD: secret

volumes:
  mongoDataStore:
    driver: local

こんなの。2020年9月にはこれで動いていた模様。mongodb は動くけど、mongo-express は動かない。

環境

docker: 20.10.11
docker-compose: 1.29.2

docker hub の公式のものから作り直す

docker-compose.yml
# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

動く。
volume を追加

docker-compose.yml
# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - ./configdb:/data/configdb
      - mongoDataStore:/data/db

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

volumes:
  mongoDataStore:
    driver: local

動かない。

原因と解決策

volume を使う場合は、mongo と mongo-express でネットワーク構成を共有しないと、この問題が起こる。

docker-compose.yml
# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    container_name: mongo-dev
    image: mongo
    restart: always
    networks:
      - mongo-compose-network
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - ./configdb:/data/configdb
      - mongoDataStore:/data/db

  mongo-express:
    container_name: mongo-express
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    networks:
      - mongo-compose-network
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

networks:
  mongo-compose-network:
    driver: bridge
volumes:
  mongoDataStore:
    driver: local

これで動きました。

1
0
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
1
0