小编fxm*_*asa的帖子

有条不紊地在docker-compose中装入卷

我有一个docker-compose.yml配置.其中一个容器是Tomcat服务器,它.warwebapps目录中部署了一些默认文件.

我希望能够传递(覆盖)war由驻留在主机上的某些人部署的存档.我认为最好的方法是以某种方式切换/覆盖启动docker-compose:默认情况下,我想运行war容器内的webapp(文件),但我希望有可能从我的主机安装目录(用于如果需要,在开发/调试期间的例子.

目前,我在我的行中有以下行,docker-compose.yml如果我需要默认值,则会注释掉.

volumes:
# By default, there is the latest version of the application already present in the container
# If you want to provider the container with your own .war file, uncomment the following line
# - ./application/webapps:/usr/local/tomcat/webapps
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?

docker docker-compose docker-volume

19
推荐指数
2
解决办法
8437
查看次数

使用Gradle插件的Findbugs在Java 9中不起作用

我正在将我的项目(多项目Gradle)从Java 8 迁移到Java 9(到目前为止不使用模块).我使用Gradle 4.3和Findbugs Gradle插件 - 我apply plugin: 'findbugs'在我的gradle.build文件中.在依赖中我有

compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
compile group: 'com.google.code.findbugs', name: 'annotations', version: '3.0.1'
Run Code Online (Sandbox Code Playgroud)

以前,使用java 8(open-jdk)一切正常,但是当我使用java 9(oracle - build 9.0.1+11)时,我在执行后得到了以下异常gradle check(com.example.custom.MyClass是我的代码库中的一个类):分析期间发生了以下错误:

Error scanning com/example/custom/MyClass for referenced classes
java.lang.IllegalArgumentException
  At org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
  At org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
  At edu.umd.cs.findbugs.asm.FBClassReader.<init>(FBClassReader.java:35)
  At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:48)
  At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:34)
  At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
  At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:75)
  At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
  At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
  At edu.umd.cs.findbugs.FindBugs2.buildReferencedClassSet(FindBugs2.java:774)
  At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:222)
  At org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:39) …
Run Code Online (Sandbox Code Playgroud)

java findbugs java-9

5
推荐指数
1
解决办法
1642
查看次数

无法在 docker 容器中的 Java 9 Tomcat 9 上远程调试

我有一个基于opendjdk:8-slim已安装 Tomcat 9的 Docker 容器,我正在调试从我的 IDE (IntelliJ) 部署在那里的应用程序 - IDE 在 Docker 主机上运行。我使用以下配置运行Tomcat

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=49520 \
-Dcom.sun.management.jmxremote.rmi.port=49520 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=10.0.75.1 \
-agentlib:jdwp=transport=dt_socket,address=49540,suspend=n,server=y"
Run Code Online (Sandbox Code Playgroud)

一切正常 - 我可以将 IDE 附加到容器。以下命令也有效(从 docker 主机执行) - 它可以连接到容器中的进程(容器中的端口 49540 映射到主机上的端口 49540):

docker-host$ telnet localhost 49540
Run Code Online (Sandbox Code Playgroud)

现在我想升级到 Java 9。我将基本映像从 更改openjdk:8-slimopenjdk:9-slim,但无法从 docker 主机连接到调试器端口。同样来自 IDE,我得到了SocketTimeoutException: Connection reset. 但是,从容器内部,我可以通过telnet.

我从openjdk存储库和其他存储库中尝试了几个 Java 9 图像,例如adenix/java,但不幸的是结果相同。

java tomcat remote-debugging docker java-9

4
推荐指数
1
解决办法
4173
查看次数