问题使用Docker-compose链接Docker中的容器
我正在使用Docker来准备我的微服务架构。 我正在尝试使用docker-compose将一个容器与另一个容器链接起来。
基本上我有一个postgressql图像的容器,以及一个用Spring开发的java微服务,它应该连接到数据库容器。
所以我在docker-compose.yml中设置了一个链接,并使用以下命令将db容器ip作为“db”引用:
- "JAVA_OPTS=-Dpostgres.host=db"
不过,我得到以下错误docker开始微服务:
引起:java.lang.IllegalArgumentException:无法parsing值“jdbc:postgresql:// $ {postgress.host}:5432 / docker”中的占位符“postgress.host”
所以基本上这个占位符不能解决,但通常docker组成应该照顾设置这个系统variables指向db容器的IP地址吗?
我做错了什么?
在涉及的文件下面:
泊坞窗,compose.yml:
version: "2" services: microservices: build: ./microservices container_name: microservices links: - db - consul environment: - "JAVA_OPTS=-Dpostgres.host=db" consul: image: consul container_name: consul ports: - "8500:8500" db: image: postgres container_name: local-postgres9.6 ports: - "5432:5432" environment: POSTGRES_PASSWORD: docker POSTGRES_USER: docker
application.yml的微服务:
server: port: 8081 project: jdbc: url: jdbc:postgresql://${postgres.host}:5432/docker driver: org.postgresql.Driver username: docker password: docker
尝试${db.host}
,根据文档 :
链接服务的容器将可以在与别名相同的主机名上访问,如果没有指定别名,则服务名称是可访问的。
- 用EBS部署多容器docker环境(flask&nginx)
- Docker安装在OSx上失败
- 主机名称与主体提供的证书主题不匹配,但是完美匹配
- 有关docker nodemcu-build的一般问题
- 泊坞窗。 芹菜和代码在不同的容器中
- 是否有可能将Traefik限制到当前(docker-compose)堆栈?
- 是否有可能通过链接两个docker集装箱来自定义环境variables?
- Kubernetes kube-dns在crashloop中暂停容器,添加networking时出错:statfs \“/ proc / 54226 / ns / net \”失败:
- 从Dockerfile中将本地目录挂载为容器中的卷