реестр, шлюз и uaa работают на компьютере, при этом один микросервис работает на другом компьютере, микросервис использует mongodb для сохранения данных, mongodb находится на одном компьютере с микросервисом.
Я следую этому сообщению , чтобы создать пользователя при использовании «docker-compose -f app.yml up», но ошибка «переменная PWD не установлена», однако PWD определяется в текущем оболочки.
После того, как я обошел подсистему $ PWD с ~ / docker /, возникает другая ошибка:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongobee' defined in class path resource [com/james/shortvideo/config/DatabaseConfiguration.class]: Invocation of init method failed; nested exception is com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'there are no users authenticated' on server hdshortvideo-mongodb:27017
application-prod.yml, как показано ниже (относится к монго):
spring:
...
data:
mongodb:
uri: mongodb://james:xxxx@localhost:27017
database: shortvideo
Когда я выполняю локальную отладку, я вручную настраиваю mongodb с созданием пользователя без полномочий root, и микросервис может успешно зарегистрироваться в реестре, поэтому я подозреваю, что причина связана с инициализацией mongodb. Любой совет?
mongodb.yml как показано ниже:
version: '2'
services:
hdshortvideo-mongodb:
image: mongo:3.6.3
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=password
ports:
- "27017:27017"
volumes:
- ~/volumes/HDShortVideo/mongodb/:/data/db/
- ~/docker/mongo-entrypoint/:/docker-entrypoint-initdb.d/
command: mongod
и user.sh в ~ / docker / mongo-entrypoint /, как показано ниже:
#!/usr/bin/env bash
echo "Creating mong users..."
mongo --authenticationDatabase admin --host localhost -u root -p xxxxx --eval "db.createUser({user: 'james', pwd: 'xxxxx', roles: [{role: 'readWrite', db: 'shortvideo'}]}); db.createUser({user: 'admin', pwd: 'xxxx', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
echo "Mongo users created."
=============================================== ===
среда для hdshortvideo-app (из app.yml) выглядит следующим образом:
mongorelated:
- SPRING_DATA_MONGODB_URI=mongodb://hdshortvideo-mongodb:27017
- SPRING_DATA_MONGODB_DATABASE=shortvideo