mongo-service/docker-compose.yml

82 lines
2.5 KiB
YAML

services:
mongodb:
image: mongo:6.0
container_name: mongodb
hostname: mongodb
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME:-admin}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD:-password}
- MONGO_INITDB_DATABASE=appdb
volumes:
- mongodb_data:/data/db
- mongodb_config:/data/configdb
- ./init-mongo-simple.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
ports:
- "27017:27017" # Expose MongoDB port to external machines
# Use a simpler configuration without replica set for now
command:
["--auth", "--bind_ip_all", "--logpath", "/proc/1/fd/1", "--logappend"]
healthcheck:
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/admin -u ${MONGO_ROOT_USERNAME:-admin} -p ${MONGO_ROOT_PASSWORD:-password} --quiet
interval: 10s
timeout: 5s
retries: 5
start_period: 40s
networks:
- mongo_network
ulimits:
nofile:
soft: 64000
hard: 64000
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "10"
mongo-express:
image: mongo-express:latest
container_name: mongo-express
hostname: mongo-express
restart: always
volumes:
- ./config.js:/node_modules/mongo-express/config.js:ro
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_ROOT_USERNAME:-admin}
- ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_ROOT_PASSWORD:-password}
- ME_CONFIG_MONGODB_SERVER=mongodb # This should match container_name of MongoDB
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
# Fix connection string format
- ME_CONFIG_MONGODB_URL=mongodb://${MONGO_ROOT_USERNAME:-admin}:${MONGO_ROOT_PASSWORD:-password}@mongodb:27017/?authSource=admin
# Explicitly disable basic auth
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_USERNAME:-mexpress}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD:-password}
ports:
- "8001:8081" # Expose Mongo Express web interface to external machines
depends_on:
mongodb:
condition: service_healthy
networks:
- mongo_network
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
networks:
mongo_network:
driver: bridge
# Adding explicit configuration to ensure proper DNS resolution
ipam:
config:
- subnet: 172.20.0.0/16
volumes:
mongodb_data:
driver: local
mongodb_config:
driver: local