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

来源:7-1 容器编排Swarm介绍

qq_某某某某_1

2020-09-24

老师,我在使用 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
这个要怎么解决啊,完全没思路
图片描述

写回答

1回答

qq_某某某某_1

提问者

2020-09-25

终于搞明白了

  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
1
麦兜搞IT
您好,您自己解决问题的能力很棒。关于docker环境的稳定性,您可以参考下我们13章最近实践里的内容,如何去写好一个dockerfile,凡是涉及到版本的问题,都尽可能指明版本
2020-09-26
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程