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