У меня есть приложение весенней загрузки и mongodb в двух контейнерах, управляемые docker-compose. Кажется, что приложение хорошо подключается к mongodb, но ни один из них не может быть доступен извне, т.е. моей локальной машине. Я думаю, что мне нужен совет специалиста, здесь ...
1) установленная база:
Docker версия 19.03.4, сборка 9013bf583a
docker-compose версия 1.24.1, сборка 4667896b
2) docker-compose.yml:
version: "3.7"
services:
app:
build: .
restart: unless-stopped
container_name: project-service
ports:
- target: 8080
published: 8080
networks:
- project-net
working_dir: /app
depends_on:
- db
db:
image: mongo
container_name: project-db
volumes:
- type: volume
source: project-data
target: /data/db
volume:
nocopy: true
restart: unless-stopped
ports:
- target: 27017
published: 27017
networks:
- project-net
networks:
project-net:
volumes:
project-data:
3) Dockerfile приложения:
FROM maven:latest AS service
WORKDIR /src/fscl/project-service
COPY . .
RUN mvn -B -f pom.xml dependency:resolve
RUN mvn -B package -DskipTests
FROM openjdk:8-jdk-alpine AS runtime
RUN apk update && apk add bash
RUN mkdir -p /app
WORKDIR /app
COPY --from=service /src/fscl/project-service/target/project-service-0.2.0.jar .
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/project-service-0.2.0.jar"]
4) статус при запуске:
$ docker-compose up&
соответствующие журналы:
project-service | 2019-11-08 15:33:09.688 INFO 1 --- [ main] org.mongodb.driver.cluster : Cluster created with settings {hosts=[project-db:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
project-db | 2019-11-08T15:33:09.755+0000 I NETWORK [listener] connection accepted from 172.20.0.3:41964 #1 (1 connection now open)
project-db | 2019-11-08T15:33:09.771+0000 I NETWORK [conn1] received client metadata from 172.20.0.3:41964 conn1: { driver: { name: "mongo-java-driver|legacy", version: "3.11.1" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "4.4.0-124-generic" }, platform: "Java/IcedTea/1.8.0_212-b04" }
project-service | 2019-11-08 15:33:09.809 INFO 1 --- [roject-db:27017] org.mongodb.driver.connection : Opened connection [connectionId{localValue:1, serverValue:1}] to project-db:27017
project-service | 2019-11-08 15:33:11.305 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
project-service | 2019-11-08 15:33:11.310 INFO 1 --- [ main] f.p.ProjectServiceApplication : Started ProjectServiceApplication in 5.538 seconds (JVM running for 6.383)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aecb3d4bb468 project-service_app "java -jar /app/proj…" About an hour ago Up 2 minutes 0.0.0.0:8080->8080/tcp project-service
257985d48264 mongo "docker-entrypoint.s…" 3 hours ago Up 2 minutes 0.0.0.0:27017->27017/tcp project-db
из этого я беру все прошло хорошо, но не получилось:
5) Проблемы:
curl localhost:8080/api/v4/projects
должен возвращать объект JSON, но это не так. Приложение не показывает реакцию регистрации, либо. В мое сервисное приложение ничего не доходит.
$ mongo
MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017
просто висит вечно
$ mongo project-db:27017
MongoDB shell version v3.4.10
connecting to: project-db:27017
2019-11-08T16:42:26.869+0100 I NETWORK [thread1] getaddrinfo("project-db") failed: Name or service not known
2019-11-08T16:42:26.869+0100 E QUERY [thread1] Error: couldn't initialize connection to host project-db, address is invalid :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
$ mongo localhost:27017
MongoDB shell version v3.4.10
connecting to: localhost:27017
тоже зависает.
Мне кажется, я следовал всем примерам, но что в мире мне нужно делать по-другому?