请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

docker-compose 部署时报错:Failed to connect to db

老师,我在使用 docker-compose 快速部署投票应用的时候,发现当启动容器的时候会有以下两个错误
1.Failed to connect to db
2./usr/local/bin/mvn-entrypoint.sh: line 39: /usr/lib/jvm/java-7-openjdk-amd64/bin/java: No such file or directory
这个要怎么解决啊,完全没思路
图片描述

正在回答 回答被采纳积分+3

1回答

提问者 qq_某某某某_1 2020-09-25 00:32:33

终于搞明白了

  1. Failed to connect to db问题

通过 docker logs 命令可以查看到 db 的报错

Error: Database is uninitialized and superuser password is not specified.
       You must specify POSTGRES_PASSWORD for the superuser. Use
       "-e POSTGRES_PASSWORD=password" to set it in "docker run".

       You may also use POSTGRES_HOST_AUTH_METHOD=trust to allow all connections
       without a password. This is *not* recommended. See PostgreSQL
       documentation about "trust":
       https://www.postgresql.org/docs/current/auth-trust.html

原来是没有指定密码。。

所以在 docker-compose.yml 中修改

db:
image: postgres:9.4
environment:
POSTGRES_USER: "postgres"
POSTGRES_HOST_AUTH_METHOD: "trust"
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- back-tier


2./usr/local/bin/mvn-entrypoint.sh: line 39: /usr/lib/jvm/java-7-openjdk-amd64/bin/java: No such file or directory

这里查看 ./worker 下的 Dockerfile 发现这里最后使用 java 路径和容器中的路径是不对的

maven                           3.5-jdk-8-alpine    fb4bb0d89941        23 months ago       119MB

具体可以进入这个容器内查看

docker run -it fb4bb0d89941 bash
bash-4.4# /usr/lib/jvm/java-1.8-openjdk/bin/java --version

发现使用的是这个路径。。。修改 worker 的 Dockerfile,重新 build

docker-compose build worker

接着

docker-composer up



这里使用容器是很方便进行环境的搭建,但是貌似不同的镜像版本,拉下来都会导致不兼容的问题,就好像老师说的你那边可以运行,但是实际中部署还是出各种各样的幺蛾子哦,想问下老师这种问题究竟应该怎么规避??

0 回复 有任何疑惑可以回复我~
  • 您好,您自己解决问题的能力很棒。关于docker环境的稳定性,您可以参考下我们13章最近实践里的内容,如何去写好一个dockerfile,凡是涉及到版本的问题,都尽可能指明版本
    回复 有任何疑惑可以回复我~ 2020-09-26 20:22:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信