services:
mongodb:
image: docker.io/mongo:4
container_name: unifi-mongodb
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=xxxxxx
- MONGO_USER=unifi_user
- MONGO_PASS=yyyyyy
- MONGO_DBNAME=unifi_db
- MONGO_AUTHSOURCE=admin
volumes:
- ./vol-mongodb:/data/db
- ./init.mongodb:/docker-entrypoint-initdb.d/init-mongo.sh:ro
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "1"
restart: unless-stopped
unifi:
image: lscr.io/linuxserver/unifi-network-application:9.0.114
container_name: unifi-app
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- MONGO_USER=unifi_user
- MONGO_PASS=yyyyyy
- MONGO_HOST=mongodb
- MONGO_PORT=27017
- MONGO_DBNAME=unifi_db
- MONGO_AUTHSOURCE=admin
- MEM_LIMIT=1024
- MEM_STARTUP=1024
volumes:
- ./vol-unifi:/config
ports:
- 8443:8443
- 3478:3478/udp
- 10001:10001/udp
- 8080:8080
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "1"
restart: unless-stopped
#!/bin/bash
if which mongosh > /dev/null 2>&1; then
mongo_init_bin='mongosh'
else
mongo_init_bin='mongo'
fi
"${mongo_init_bin}" <<EOF
use ${MONGO_AUTHSOURCE}
db.auth("${MONGO_INITDB_ROOT_USERNAME}", "${MONGO_INITDB_ROOT_PASSWORD}")
db.createUser({
user: "${MONGO_USER}",
pwd: "${MONGO_PASS}",
roles: [
{ db: "${MONGO_DBNAME}", role: "dbOwner" },
{ db: "${MONGO_DBNAME}_stat", role: "dbOwner" }
]
})
EOF