У меня есть приложение Java, разработанное с использованием весенней загрузки, которое устанавливает соединение с Менеджером объявлений Google (DFP) для сохранения данных в Менеджере Google AD. Он хорошо работает на локальном компьютере, но когда я развертываю его в Docker, он выдает ошибку при запуске приложения весенней загрузки.
Ниже jdk установлен в контейнере Docker: java-1.8.0-openjdk-amd64
Ниже приведены мои несколько фрагментов кода:
- Dockerfile:
#Pull Java 8 Image
FROM java:8
#Add app jar to container
ADD target/my-service-0.0.1-SNAPSHOT.jar my-service-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "my-service-0.0.1-SNAPSHOT.jar"]
- докер-compose.yml
version: "3.7"
services:
my-service:
build:
context: .
dockerfile: Dockerfile
image: my-service:latest
ports:
- "8080:8080"
- Подключение к менеджеру объявлений Google:
Credential oAuth2Credential = new OfflineCredentials.Builder().forApi(Api.AD_MANAGER)
.withClientSecrets(clientId, clientSecret).withRefreshToken(refreshToken).build()
.generateCredential();
session = new AdManagerSession.Builder().withApplicationName(applicationName).withNetworkCode(networkCode)
.withOAuth2Credential(oAuth2Credential).build();
AdManagerServices adManagerServices = new AdManagerServices();
NetworkServiceInterface networkService = adManagerServices.get(session, NetworkServiceInterface.class);
Network network = networkService.getCurrentNetwork();
Я ожидал, что соединение прошло успешно; но ниже я получил ошибку:
com.google.api.ads.common.lib.exception.OAuthException: Credential could not be refreshed.
er-order-service_1
at com.google.api.ads.common.lib.auth.OfflineCredentials.generateCredential(OfflineCredentials.java:240)
Но когда я вижу ошибку, я получаю сообщение об ошибке ниже:
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target