Как получить доступ к открытому порту развернутой службыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как получить доступ к открытому порту развернутой службы

Сообщение Anonymous »

У меня есть простая служба весенней загрузки, которая выполняет операции CRUD с использованием MySQL. Я закрепил свою службу, извлек образ MySQL и заставил изображения работать в той же сети и работать.
Проблема в том, что я не могу получить доступ к службе, используя открытый порт по умолчанию. (определено как 7070).

Вот мои свойства источника данных Spring, определенные в application.properties:

Код: Выделить всё

spring.datasource.url=jdbc:mysql://0.0.0.0:3306/test
#spring.datasource.url=jdbc:mysql://mysql:3306/test
spring.datasource.username=root
spring.datasource.password=image
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

#----ADDITIONAL PROPERTIES-----#
server.port = 7070
server.servlet.context-path=/jpatest
server.servlet.session.timeout=15m
Вот как я извлек и запустил образ MySQL:

Код: Выделить всё

$ docker network create image

$ docker run --name mysql --network image -p 3306:3306 -e MYSQL_ROOT_PASSWORD=
 -d mysql:8.3.0

$ docker run -it --network image --rm mysql mysql -hmysql -uroot -p
Это мой DOCKERFILE:

Код: Выделить всё

FROM eclipse-temurin:17-jdk-focal as build

WORKDIR /app

COPY gradlew .
COPY gradle gradle

COPY build.gradle settings.gradle ./
COPY src src

RUN ./gradlew clean build

FROM openjdk:17-jdk-slim

WORKDIR /app

COPY --from=build /app/build/libs/*.jar ./

EXPOSE 7070

ENTRYPOINT ["java", "-jar", "jpatest-0.0.1-SNAPSHOT.jar"]
Это команда запуска Docker: docker run -it --network image --publish 7070
Вот весенние журналы запуска:

Код: Выделить всё

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::                (v3.2.2)

2024-07-01T11:07:30.356Z  INFO 1 --- [           main] com.test.jpatest.JpatestApplication      : Starting JpatestApplication v0.0.1-SNAPSHOT using Java 17.0.2 with PID 1 (/app/jpatest-0.0.1-SNAPSHOT.jar started by root in /app)
2024-07-01T11:07:30.369Z  INFO 1 --- [           main] com.test.jpatest.JpatestApplication      : No active profile set, falling back to 1 default profile: "default"
2024-07-01T11:07:32.646Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2024-07-01T11:07:32.652Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode.
2024-07-01T11:07:32.723Z  INFO 1 --- [           main] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.test.jpatest.repo.TXBooking_MasterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2024-07-01T11:07:32.728Z  INFO 1 --- [           main] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface com.test.jpatest.repo.UserRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2024-07-01T11:07:32.730Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 64 ms. Found 0 JDBC repository interfaces.
2024-07-01T11:07:32.745Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2024-07-01T11:07:32.747Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2024-07-01T11:07:32.985Z  INFO 1 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 229 ms.  Found 2 JPA repository interfaces.
2024-07-01T11:07:34.491Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 7070 (http)
2024-07-01T11:07:34.514Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-07-01T11:07:34.517Z  INFO 1 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.18]
2024-07-01T11:07:34.616Z  INFO 1 --- [           main] o.a.c.c.C.[.[localhost].[/jpatest]       : Initializing Spring embedded WebApplicationContext
2024-07-01T11:07:34.620Z  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4065 ms
2024-07-01T11:07:35.404Z  INFO 1 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2024-07-01T11:07:35.536Z  INFO 1 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.4.1.Final
2024-07-01T11:07:35.610Z  INFO 1 --- [           main] o.h.c.internal.RegionFactoryInitiator    : HHH000026: Second-level cache disabled
2024-07-01T11:07:36.180Z  INFO 1 --- [           main] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
2024-07-01T11:07:36.244Z  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-07-01T11:07:37.071Z  INFO 1 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@2d8c729f
2024-07-01T11:07:37.077Z  INFO 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2024-07-01T11:07:39.256Z  INFO 1 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2024-07-01T11:07:39.772Z  INFO 1 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-07-01T11:07:40.413Z  INFO 1 --- [           main] o.s.d.j.r.query.QueryEnhancerFactory     : JSqlParser is in classpath; If applicable, JSqlParser will be used
2024-07-01T11:07:40.414Z  INFO 1 --- [           main] o.s.d.j.r.query.QueryEnhancerFactory     : Hibernate is in classpath; If applicable, HQL parser will be used.
2024-07-01T11:07:41.374Z  WARN 1 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2024-07-01T11:07:42.851Z  INFO 1 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 14 endpoint(s) beneath base path '/actuator'
2024-07-01T11:07:43.022Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 7070 (http) with context path '/jpatest'
2024-07-01T11:07:43.055Z  INFO 1 --- [           main] com.test.jpatest.JpatestApplication      : Started JpatestApplication in 14.028 seconds (process running for 15.228)
Но когда я обращаюсь к сервису, используя определенный мной порт (7070), он не находит страницу. Но служба работает отлично, когда я использую определенный HostPort в проверке изображения. Ниже приведен фрагмент конфигурации моего образа службы.

Код: Выделить всё

"Ports": {
"7070/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32770"
},
{
"HostIp": "::",
"HostPort": "32770"
}
]
},

Сервис работает, когда я использую http://0.0.0.0:32770/jpatest или http://localhost:32770/jpatest
Мне приходится каждый раз проверять контейнер, чтобы получить определенный HostPort, поскольку он меняется каждый раз, когда я останавливаю и запускаю службу.
Есть ли какое-нибудь решение этой проблемы? ?
Сервис работает, когда я использую http://0.0.0.0:32770/jpatest или http://localhost:32770/jpatest
Мне приходится каждый раз проверять контейнер, чтобы получить определенный HostPort, поскольку он меняется каждый раз, когда я останавливаю и запускаю службу.
Я ожидаю, что моя служба будет доступна через указанный мной порт. (7070), но это не так.
Есть ли какое-нибудь решение этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/786 ... posed-port
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»