ile Mongo kapsayıcı oluşturmak: Bu mükemmel çalışıyorliman işçisi-oluşturma Bir Mongo konteyner oluştur'da içinde oluşturulan sahip kullanıcı adı ve şifre
version: '2'
volumes:
mongodata:
driver: local
services:
mongo:
image: mongo:latest
hostname: ${MONGODB_HOST}
restart: always
ports:
- "27017:27017"
volumes:
- mongodata:/data/db
Ancak şimdi veritabanı üzerinde bir şifre koymak istiyorum. Bunu yapmak için öncelikle anladığım kadarıyla veritabanı oluşturmalı, parola eklemeli ve ardından --auth
bayrağından yeniden başlatmalıyım. Sorum, docker-compose ile bu işlemi nasıl yapılacağıdır.
Docker-compose olmadan her şeyi yaparsam bunu yapabilirim. Oluşturma ile ortaya çıkabilecek sorunlar şunlardır:
a) docker-compose bir docker ağının içinde çalışır. b) docker-compose, üretim sırasında olduğu gibi başlangıçta farklı komutlar çalıştıramaz. - Bu önemlidir çünkü bazı insanlar başlangıçta --auth
'u çalıştırabileceğinizi ve ilk kez bir şifre belirlemenize izin vereceğini söylese de, bu durum böyle görünmüyor. ,
# start the temporary container
docker run -d -v /tmp/mongodb --name tmpdb -e MONGODB_DBNAME=db_test mongo --auth
# do the user creation
docker run -it --link tmpdb --rm mongo sh -c 'mongo --host tmpdb --eval "db.createUser({ user: \"admin\", pwd: \"password\", roles: [ { role: \"root\", db: \"admin\" } ] });"'
# stop the server
docker stop tmpdb
# create new mongodb container, using the old ones data
docker run -d -p 27017:27017 --name mongo2 -e MONGODB_DBNAME=db_test mongo --auth
# clean up old container (we are using the volumes so they will stick around)
docker rm tmpdb
Bu dosya, geçici bir kabı oluşturur üzerinde bir kullanıcı adı/parola ayarlar: Ben çalışmaya başladı
bir çözüm ben liman işçisi-oluşturma dosyasını çalıştırmadan önce tüm sunucularda aday olacağını bir kabuk oldu Özgün kabı durdurur, eskileri hacim kabını kullanarak yeni bir tane oluşturur ve orijinali siler. Yeni mongo konteynerinin artık bir şifresi var.
Sonuç olarak benim bu soru, docker-compose'da bunu yapmanın en iyi yolu nedir? Benim liman işçisi-oluşturma dosyasında
Benim diğer kaplar bu yüzden Mongo verilerini tutan hacimli konteyner liman işçisi-oluşturma