Tag: Java

在Kubernetes集群中存储数据的位置

由复制控制器控制并在Kubernetes中的服务后面“隐藏”的pod如何写入/读取数据? 如果我有一个应用程序从用户那里接收需要被保存的图像,我在哪里存储? 由于前面的服务,如果使用卷,我无法控制存储在哪个节点上。

运行tomcat运行docker实例并部署到这个tomcat应用程序是否正常?

我使用Docker和DOCKERFILE来为应用程序创build基本的环境。 这涉及到安装os , java和tomcat 。 我有一个关于这个问题 – 如果可以运行docker实例与tomcat安装和部署应用程序,更新版本的应用程序运行docker容器?

Runtime.getRuntime()。exec在主机上从一个Docker进程中

我有一个在Docker容器中运行的Java程序。 这个程序需要执行一个应该由主机系统运行的shell命令,但是只需要调用Runtime.getRuntime().exec(…)在Docker容器中执行它(应该是这样)。 有没有一种方法可以从容器内部启动一个进程,以便进程在外部运行? 我怀疑exec命令应该通过Docker来告诉它,命令本身需要在主机上运行,​​但我不知道如何做到这一点。

在Docker构build文件中使用自定义Cert设置Jetty Runner

我目前正在创build一个Docker文件来构build我们的java应用程序,而且我遇到了一个问题,就是不得不使用自定义的.cert键来使用logstash-logback-forwarder来loginSSL,而webapp本身也需要做SSL连接(连接到SOAP SSL)。 事情是,我可以loginSSL,并且Web应用程序可以安全地使用SOAP API(它始终能够做到这一点),但是我不能同时做到这一点。 对于初学者来说,这里是我的docker构build文件的相关部分 ADD logstash-forwarder.crt /root/logstash-forwarder.crt RUN (cd /root && /usr/java/latest/bin/keytool -import -file logstash-forwarder.crt -alias logstash -storepass SOMEPASS -noprompt -keystore logstash.keystore) 这添加了crt文件,然后使用keytool导入到keyStore中。 我正在使用logstash-logback-forwarder,它使用标准的SSLSocketFactory (即https://github.com/logstash/logstash-logback-encoder/blob/master/src/main/java/net/logstash/logback/appender/ SSLLogstashTcpSocketAppender.java ) 然后我运行我的java网站(通过jetty-webrunner),使用这个命令 CMD java -Dlogback.configurationFile=/root/logback.xml \ -Djavax.net.ssl.keyStorePassword=SOMEPASS \ -Djavax.net.ssl.keyStoreType=pkcs12 \ -Djavax.net.ssl.trustStoreType=jks \ -Djavax.net.ssl.trustStore=logstash.keystore \ -Djavax.net.ssl.trustStorePassword=SOMEPASS \ -server -ea -XX:+UseConcMarkSweepGC \ -XX:+CMSClassUnloadingEnabled \ -Xmx2048M -jar jetty-runner-9.2.3.v20140905.jar \ –port 8080 […]

如何处理config / properties文件中的密码

我们有不同团队之间的共享代码库。 是否有任何一种最佳的做法,将pipe理员凭据存储在弹簧属性文件中? 我不希望任何人看到用户名或密码。 我们使用docker,知道我可以使用docker的秘密,但我不想将密码绑定到docker。 我想要访问密码,即使我们不使用docker。

如何在Docker容器中设置Java堆大小(Xms / Xmx)?

至于提出这个问题,Docker看起来已经足够新,没有网上的这个问题的答案。 我发现的唯一的地方就是这篇文章 ,作者说这很难,就是这样。

在docker中debuggingspring-boot

出于某种原因,我将远程debugging连接到docker中运行的spring-boot应用程序时遇到问题。 我启动Java应用程序: java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar app.jar 对于docker工人,我在docker-compose上公开这些端口: ports: – "8080:8080" – "8000:8000" 但是,debugging器无法在端口8000上连接。当我在本地运行服务器,但不在docker内时,它起作用。 任何想法为什么? Docker ps输出: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0d17e6851807 pocmanager_manager:latest "/bin/sh -c 'java -D 3 seconds ago Up 2 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp pocmanager_manager_1 35ed2e2c32bc redis:latest "/entrypoint.sh redi 14 seconds ago Up 13 seconds 0.0.0.0:6379->6379/tcp pocmanager_redis_1

从Docker容器中运行的JVM应用程序将日志发送到Graylog的最佳实践是什么?

我使用Graylog作为中央日志logging服务器,并使用gelf log4j2-appender将日志消息发送到graylog。 这工作正常。 现在我创build了我的应用程序的泊坞窗图像,我能够运行我的软件作为docker集装箱。 使用docker我也login到标准输出(控制台appender)获取应用程序日志到docker(docker logs {containerId})。 现在我问自己,我可以在gelf log4j2-appender上腾出空间,并使用docker log-driver / plugin作为gelf。 (请参阅https://docs.docker.com/engine/admin/logging/overview/ ) 这里最好的做法是什么? 我认为使用docker日志插件会将整个string消息发送到graylog,并且graylog需要从该string中提取元信息(所以我需要在日志消息中提供这个元数据,例如log_level)。 这可能会导致更多的资源消耗在graylog端,也不可能configuration泊坞窗只发送错误消息到graylog。 这导致更多的networkingstream量。 使用log4j2 gelf-appender,我可以在日志消息中提供额外的元数据,而不需要将其包含在主日志消息中,并且在graylog端不需要提取。 也可以通过log_levelconfiguration哪些消息应该发送给graylog。 还是我错了? 什么是最好的解决scheme或每种方式发送日志到graylog的优点和缺点是什么?

Java操场的Gradle任务

我对Docker和Gradle还是个新手,但是我正在尝试设置一个构buildDocker镜像的Gradle构build。 我刚刚完成了一个Dockerfile设置,这个Dockerfile在本地部署并按预期运行了jar。 我有这个在我的build.gradle : buildscript { repositories { mavenCentral() } dependencies { classpath 'se.transmode.gradle:gradle-docker:1.2' } } plugins { id 'com.github.johnrengelman.shadow' version '1.2.3' } apply plugin: 'docker' jar { manifest { attributes 'Main-Class': 'com.myapp.Main' } } task buildDocker(type: Docker, dependsOn: shadowJar) { push = false applicationName = jar.baseName tagVersion = 'latest' dockerfile = file('src/main/docker/Dockerfile') copy { […]

Docker-client Java API:服务器无法响应有效的HTTP响应

pipe理解决了我昨天发布的问题,其中的Java客户端库无法连接到我的守护进程,但现在我有一个新的问题,我无法find任何关于在线信息。 我在Win7 64位上运行Boot2Docker v1.6 Windows安装程序。 我可以运行docker命令就好了。 然后,我从https://github.com/spotify/docker-client中取出最新的Docker-client master分支(v2.7.22),并在Eclipse Java IDE中运行它。 在DefaultDockerClient中,我将DEFAULT_HOST和DEFAULT_PORT更改为Docker似乎使用的值https://docs.docker.com/installation/images/windows-boot2docker-cmd.png (默认值为localhost:2375连接拒绝错误)。 我试着运行下面的命令: final DockerClient docker = DefaultDockerClient.fromEnv().build(); List results = docker.searchImages("ubuntu"); 我的结果是一个Apache错误: Exception in thread "main" com.spotify.docker.client.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1109) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028) at com.spotify.docker.client.DefaultDockerClient.searchImages(DefaultDockerClient.java:653) at com.spotify.docker.client.main.Test.main(Test.java:28) Caused by: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:306) at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:293) at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1026) … 2 more […]