[英]docker-compose java application connection to mongodb
2个容器,一个Java应用程序和第二个mongodb。
如果我在本地运行Java应用程序,并且在容器中运行mongodb,它将连接,但如果两者都在容器中运行,则Java应用程序将无法连接至mongodb。
docker-compose文件如下,我是否缺少某些东西
version: "3"
services:
user:
image: jboss/wildfly
container_name: "user"
restart: always
ports:
- 8081:8080
- 65194:65193
volumes:
- ./User/target/User.war:/opt/jboss/wildfly/standalone/deployments/User.war
environment:
- JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:65193,suspend=n,server=y -Djava.net.preferIPv4Stack=true
- MONGO_HOST=localhost
- MONGO_PORT=27017
- MONGO_USERNAME=myuser
- MONGO_PASSWORD=mypass
- MONGO_DATABASE=mydb
- MONGO_AUTHDB=admin
command: >
bash -c "/opt/jboss/wildfly/bin/add-user.sh admin Admin#007 --silent && /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0"
links:
- mongo
mongo:
image: mongo:4.0.10
container_name: mongo
restart: always
volumes:
- ./assets:/docker-entrypoint-initdb.d/
environment:
- MONGO_INITDB_ROOT_USERNAME=myuser
- MONGO_INITDB_ROOT_PASSWORD=mypass
ports:
- 27017:27017
- 27018:27018
- 27019:27019
编辑
我也对以下内容感到困惑。
links:
- mongo
depends_on:
- mongo
您可能无法连接,因为您将MONGO_HOST
设置为localhost
并且mongo是链接服务。
为了使用链接的服务网络,你必须指定MONGO_HOST
作为服务的名称- mongo
,这样的:
MONGO_HOST=mongo
在2019年7月,官方Docker文档:
来源: https : //docs.docker.com/compose/compose-file/#links
使用环境变量将所有配置集中在一个文件中,并在docker-compose up之前执行它
在这种情况下,以下方法可以帮助我:
该文件可以命名为: / env / company_environments,带扩展名或不带扩展名。
export MACHINE_HOST=$(hostname -I | awk '{print $1}')
export GLOBAL_LOG_PATH=/my/org/log
export MONGO_PASSWORD=mypass
export ANOTHER_GLOBAL_VARIABLE=123456
app1:
environment:
- MONGO_HOST=$MACHINE_HOST
- MY_TOKEN=$ANOTHER_GLOBAL_VARIABLE
app2:
environment:
- LOG_PATH=$GLOBAL_LOG_PATH
- MONGO_PASSWORD=$MONGO_PASSWORD
- NOT_DOCKER_POSTGRESS_JDBC_URL_IN_SAME_MACHINE=jdbc:postgresql://$MACHINE_HOST/database
只需在docker-compose命令之前添加源代码:
source /env/company_environments
docker-compose up -d
如果您还有另一个docker-compose.yml文件,则只需在另一个docker-compose.yml文件夹中执行相同的命令:
source /env/company_environments
docker-compose up -d
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.