Tag: Java

Docker中的SpringApplication不再工作

我有一个奇怪的问题。 我用一些function逻辑创build了一个Spring应用程序,并在本地启动它 – 它工作。 然后,我已经将我的整个项目导出到一个.war文件,并build立一个泊坞窗图像来在本地运行 – 它的工作。 由于ca. 2天…我想我做了一些改变…我想build立和再次运行我的docker文件,但总是停在这一点: Launching defaultServer (WebSphere Application Server 17.0.0.2/wlp-1.0.17.cl170220170523-1818) on IBM J9 VM, version pxa6480sr4fp10-20170727_01 (SR4 FP10) (en_US) [AUDIT ] CWWKE0001I: The server defaultServer has been launched. [AUDIT ] CWWKE0100I: This product is licensed for development, and limited production use. The full license terms can be viewed here: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/17.0.0.2/lafiles/en.html […]

在哪里设置docker的代理Spring Boot Docker镜像/容器

我有弹簧启动应用程序正在互联网连接,这个应用程序jar是在docker集装箱,我在公司代理。 在我的dockerfile是有代理作为 ENV http_proxy http:// … ENV https_proxy https:// … 而且在我的我的java代码主要方法是有这样的代理设置: System.setProperty("http.proxyHost", "removed"); System.setProperty("https.proxyHost", "removed"); System.setProperty("http.proxyPort", "removed"); System.setProperty("https.proxyPort", "removed"); System.setProperty("http.proxyUser", "removed"); System.setProperty("http.proxyPassword", "removed"); 但它不适合我 我也尝试使用build-args设置代理: docker生成–build-arg HTTP_PROXY = http:// .. 但那也不起作用。 请帮我知道什么是最好的方式申请代理春季启动应用程序运行在公司代理后面的容器 我忘了提及,我正在使用Windows 10和docker托盘 – >设置 – >代理我已经设置了我的公司代理

IntelliJ IDEA或Eclipse可以在一个操作系统上运行UI,但是在另一个操作系统的容器上编译 – 生成 – 执行?

我们有一个tomcat Web应用程序,其中包含许多构build和运行时依赖项,需要花费时间和精力进行安装。 所以我们将构build和运行时环境隔离到docker容器,并且它工作正常。除了通过运行一个可能带有几个参数的脚本与构build容器进行交互,就是这样。 这样,我们总能得到一个干净的工作环境,一个工作的构build,但是放弃了现代IDE的优势,比如只编译真正需要的东西,在tomcat应用程序中热replace类等等。我们正在应用变通办法, IDE脚本中的function,但..希望有另一种方式。 有没有办法在一个操作系统上运行Eclipse或IntelliJ的想法(在我的情况下是Mac OS X),并在容器或虚拟机中运行 – 构build – 编译? 你知道,在我的主要操作系统上,有一些X-Window风格的IDE只是用熟悉的主机系统键盘快捷键和外观的UI,但所有的IDE“引擎”都要在一个单独的容器/虚拟机中执行。 PS或者我问错误的问题? 如果您只想在一个地方设置维护构build运行时环境,那么对于启用IDE的开发,您的解决scheme是什么?

卷将属性文件映射到docker内部的webapp

是否有可能将一个属性文件的卷映射到已经部署在docker容器内的tomcat上的webapp的类path? 当我尝试这样做时,它将replace根文件夹的内容,例如: 如果v图是: -v <host-folder> /x.properties:<container-path-to-tomcat> /webapps//WEB-INF/classes/x.properties 然后将<container-path-to-tomcat> / webapps / WEB-INF /的全部内容replace掉。 任何见解? 问题是,是否可以replace容器内部署的工件?

连接到从docker容器到主机中打开的端口的端口

我有一个Spring启动应用程序,使jdbc连接到不同的VPC中的数据库。 从我本地我没有访问这个数据库,所以当我在本地部署我的应用程序时,我必须打开一个SSH通道才能连接到数据库。 这是如何设置隧道: ssh -L 61616:data_base_host:data_base_port myuser@tunnel_server 然后我的应用程序连接使用: jdbc:sqlserver://localhost:61616…. 现在我需要将我的应用程序放入Docker容器中。 这是我如何运行我的docker图像: docker run -p 9018:9018 myapp 9018是http端口。 当Spring启动应用程序在Docker内部启动时,它无法连接到数据库。 错误是: Failed to initialize pool: The TCP/IP connection to the host localhost, port 61616 has failed. 所以我需要将容器内的端口61616绑定到主机的端口61616。 我能够解决我的问题使用这个jdbcurl: jdbc:sqlserver://docker.for.mac.localhost:61616 使用别名docker.for.mac.localhost可以实现这个诀窍,但它是面向Mac平台的解决scheme。 我也试过: docker run -p 9018:9018 -p 61616:61616 myapp 并没有工作。 有任何想法吗?

基于Docker的tomcat webapp仅在MacOS上失败

我们已经dockerized我们的webapp。 该应用程序在所有平台上按预期工作 – Linux,Mac等 最近它只在Mac上开始失败。 由于奇怪的NoClassDefFound / NoSuchMethodErrortypes的exception,webapp无法启动。 api | Caused by: java.lang.NoSuchMethodError: org.apache.logging.log4j.ThreadContext.getThreadContextMap()Lorg/apache/logging/log4j/spi/ReadOnlyThreadContextMap; api | at org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createDefaultInjector(ContextDataInjectorFactory.java:83) api | at org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createInjector(ContextDataInjectorFactory.java:67) api | at org.apache.logging.log4j.core.lookup.ContextMapLookup.<init>(ContextMapLookup.java:34) api | at org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:117) api | at org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:125) api | at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32) api | at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:77) api | at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:171) api | at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:145) api | at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:70) api […]

docker安装Java 8的链接404找不到

我想在我的Ubuntu 16.4中使用Docker文件安装Java 8,但是我得到了下面的错误 – Connecting to download.oracle.com (download.oracle.com)|65.202.184.96|:80… connected. HTTP request sent, awaiting response… 404 Not Found 2017-10-19 15:34:18 ERROR 404: Not Found. Dockerfile FROM ubuntu:16.04 ENV GOSU_VERSION 1.9 ENV SPARK_VERSION 2.0.2 ENV SPARK_HOME /usr/local/spark ENV SPARK_USER aml ENV GLIBC_APKVER 2.24-r0 ENV LANG=en_US.UTF-8 LABEL vendor=ActionML \ version_tags="[\"1.6\",\"1.6.3\"]" ENV JAVA_HOME /usr/lib/jvm/java-8-oracle RUN apt-get update && \ […]

如何使用docker API

我使用的是https://github.com/docker-java/docker-java ,还有一个我需要input的命令: DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock" 我把它放在Windows PowerShell上,我得到这个: DOCKER_OPTS = -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock:术语'DOCKER_OPTS = -H tcp://127.0.0.1:2375 -H unix:// /var/run/docker.sock“不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含path,请validationpath是否正确,然后重试。 在行:1 char:1 + DOCKER_OPTS =“ – H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock”+ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:ObjectNotFound:(DOCKER_OPTS = -H … run / docker.sock:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException 我如何更改Docker主机IP和端口?

JUnittesting中的Java Docker客户端无法连接到守护进程

我试图自动pipe理我的Docker容器中的应用程序,使用Spotify Docker Client进行与Docker for Mac的集成testing。 DockerClient docker = new DefaultDockerClient.fromEnv().build(); HostConfig hostConfig = HostConfig.builder() .portBindings(new HashMap<String, List<PortBinding>>(){{ put("8080", Arrays.asList(PortBinding.of("localhost", 8080))); }}).build(); ContainerConfig containerConfig = ContainerConfig.builder() .hostConfig(hostConfig) .exposedPorts("8080") .image("my-app") .portSpecs(Arrays.asList("8080:8080")) .build(); ContainerCreation createdContainer = docker.createContainer(containerConfig); createContainer调用失败: 2091 [jersey-client-async-executor-0] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager – Connection request: [route: {}->unix://localhost:80][total kept alive: 0; route allocated: 0 of 100; total allocated: 0 […]

容器化的弹簧引导应用程序与oracle数据库重置连接

我有一个使用Oracle数据库的容器化的弹簧启动应用程序的问题。 我成功地构build了我的图像,但是当我使用docker运行它时,应用程序在获取连接池时受阻。 应用程序运行的连接重置exception,如果我尝试连接它,我得到另一个连接重置exception,但如果我刷新页面应用程序正常工作,直到我尝试稍后再次使用该应用程序。 Dockerfileconfiguration如下: FROM openjdk:8-jre-alpine VOLUME /tmp ADD *.jar /app.jar EXPOSE 8082 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"] 应用程序属性也很标准: server.port = 8082 spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver spring.datasource.url=jdbc:oracle:thin:@<ip>:1521:<database> spring.datasource.username=<username> spring.datasource.password=<password> spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect 我正在构build映像并使用以下命令运行docker容器: docker build -t <image_name> . docker run -p 8082:8082 -d <image_name>` 我已经尝试了几件事情: 使用谷歌search的问题,我发现在Linux内运行时Oracle有熵问题,所以我添加了-Djava.security.egd = file:/ dev /./ urandom 这不起作用,所以我尝试了熵的工具。 我不知道到底在哪里安装它,所以我试图在两个地方安装它(在容器内使用RUN apk -U add haveged在主机上(这是一个Ubuntu的xenial 16.04.4)) 这没有任何工作,所以我试图通过从容器中删除/dev/random来“破解”,并用符号链接replace它,使用ln -s /dev/urandom /dev/random ,但即使这样也不起作用,所以我尝试更改java.security属性securerandom.source=file:/dev/random […]