Tag: Java

Java Spring Hibernate应用程序在本地运行,但不在aws的ecs docker中运行

亲爱的Java和Docker大师们, 你有遇到拔出头发的问题吗? 尝试这个: 我有一个Java的Spring Hibernate的Web应用程序,可以在我的本地通过Gradle构build成功运行。 IT使用Oracle JDK 1.8.0_101进行编译。 它在Tomcat 7.0.72下运行(而Tomcat在JDK 1.8.0_102上运行Open)。 它完美地运行着这场战争。 为什么我有这样不同的jdk版本? 因为我想模仿下面的开发服务器。 我的Dev服务器是aws ecs下的docker,只有一个容器映像。 而这个容器的图片使用了tomcat:7.0.72-jre8的图片库。 在容器中运行相同的应用程序将引发以下错误: 创build名称为“agencyRepository”的bean时出错:init方法的调用失败; 嵌套exception是java.lang.IllegalArgumentException:不是托pipetypes:class com.mnetmobile.data.entities.Agency 我拖动那个战争文件,并运行在我的本地,它像一个冠军。 所有的JDK版本都是一样的,tomcat版本是一样的。 唯一不同的是,一个Windows 7笔记本电脑,与Ubuntu的Linux和运行docker。 (所有不同的path都是N / A,因为都有相对path) 任何想法,我可能错过了哪个洞?

docker工人容器不会在后台启动Java

docker必须在构build阶段启动java / undertow应用程序,并且在运行阶段应该可用。 然而,在启动java进程之后,与启动java服务器相关的容器更改不会保留。 因此,在此步骤中所做的更改不会影响图像。 在我的docker文件中的最后一个命令是 RUN java -jar /svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5 当我运行这个容器,我可以看到输出存在于server.log文件确认服务器成功启动 StartServices – Services Started 但是当我运行容器时,没有服务正在运行。 我可以手动启动它,但这不是我想要做的。 容器启动时,我希望服务器启动。 注意 & sleep 5 如果我不等待这5秒钟,将不会创build任何日志。 Docker会立即放弃这个步骤,而不让我的Java应用程序启动。 然而,即使“睡眠5”让我的应用程序启动,docker工人仍然忽略了图像的变化,不适用。 所以当我做“docker运行”我的应用程序没有运行。 这里是Dockerfile: FROM anapsix/alpine-java ENV TC_BASE=/opt/tc_base ENV APP_BASE=$TC_BASE/svc ENV PATH=.:$PATH RUN apk update && apk add unzip COPY files/build/lib/svc/target/svc-0.0.1-SNAPSHOT-bin.zip $APP_BASE/ COPY files/build/lib/api/src/main/resources/api.properties $TC_BASE/conf/api/ COPY files/build/lib/svc/src/main/resources/svc.properties $TC_BASE/conf/svc/ […]

Play Framework应用程序默认使用多less最大堆空间

我正在部署一个Play Framework 2.4应用程序作为AWS上的Docker容器。 我必须为容器指定一个硬/软内存限制。 我不知道select什么限制,并且想将其设置为应用程序可能使用的最大堆空间量。 研究我只find了有关如何更改Play应用程序的最大堆空间的讨论和说明,但我无法弄清楚它默认设置了什么。

将Java应用程序连接到YouTube Vitess数据库

我使用DEPLOYMENTS将我的java web应用程序部署到了kubernetes中,并且能够将其扩展并连接到数据库POD,但是我也想扩展数据库,但是如您所知在kubernetes中不可行,并且MYSQL REPLICA不推荐用于生产。 所以我尝试了vitess,能够扩展我的数据库,但不知道如何或应该在哪里创build我的Java Web应用程序部署/ REPLICAS,并通过vtgate连接到数据库。 是否有另一种方式通过kubernetes扩展mysql数据库?

持续集成 – 只部署更改的组件

我在java中有以下组件,每个都是一个单独的maven模块: 尤里卡服务器 Zuul代理 微服务#1 这些组件中的每一个都是独立的Docker镜像,它们共享一个相同的Git仓库。 jenkins也可用。 我的问题是,当更改单个组件来重builddocker镜像并部署它,而不是重新部署所有东西时,这是可能的。 CI的常见做法是什么? 我想过这个,可能的办法是将模块分离到不同的git仓库中,并在主项目中使用git子模块,有没有更好的方法来实现这个(maven / jenkins或docker)?

Docker:启用内存限制和内存过载禁用的运行容器的负面影响是什么?

在我的环境中,我将禁用内存过量使用(vm.overcommit = 2)。 这也禁用了Linux OOMKiller。 原因是我在Docker容器中运行Java应用程序时,内存大小受到了限制,我希望看到它们与OOMError(和写入堆转储)失败,而不是由Linux OOMKiller静静地杀死。 Iam不确定可能的负面影响。 我不是Linux内核,docker内存pipe理或Java VM专家,所以决定在这里问一下。 如果有人有这样的经验,你能告诉我吗?

Docker容器中的OpenJDK 1.8.0与/ etc / timezone和主机有不同的时区

我有一个运行TomEE的Docker容器的Linux机器,运行一个我构build的WAR。 在基本的Linux机器上,我得到一个“date”值“2017年1月20日10:37:27 PST 2017”。 TZ环境variables未设置。 当我运行以下类: import java.util.Date; import java.util.TimeZone; public class DatePrint { public static void main(String[] args) { System.out.println("date[" + new Date() + "] tzoffset[" + TimeZone.getDefault().getOffset(new java.util.Date().getTime()) + "]"); } } 我得到这个: date[Fri Jan 20 10:39:02 PST 2017] tzoffset[-28800000] 这一切都很好。 在我的Docker容器上运行,其中我有“-v / etc / localtime:/ etc / localtime”作为一个卷映射,我显然有相同的/ etc / localtime文件。 TZ环境variables未设置。 […]

无法连接到发现卡夫卡容器,基本连接问题

与docker和kafka磕磕绊绊的基础,不能得到客户端连接 到目前为止我所做的 1)在Windows 10上安装Docker窗口。2)打开kitematic,并searchkafka,并select了spotify kafka(wurstmeister图像未启动)。 3)容器启动,我可以看到图像在容器日志中运行。 4)IP和端口报告docker端口9092 – 和访问端口为本地主机:32768 docker ps show this 7bf9f9278e64 spotify / kafka:latest“supervisord -n”2小时前Up 57分钟0.0.0.0:32769->2181/tcp,0.0.0.0:32768->9092/tcp kafka docker-machine active,返回没有活动的主机 我的groovy类(从一个例子中剪切粘贴类似这样的连接 class KafkaProducer { String topicName = "wills topic" Producer<String, String> producer def init () { Properties props = new Properties() props.put("bootstrap.servers", "192.168.1.89:32768" ) //Assign localhost id and external port (9092 int) props.put("acks", […]

泽西岛灰熊HTTP服务器在集装箱docker内closures

我正试图在一个容器内执行一个Grizzly HTTP Server。 我的问题是,当我运行容器(使用docker-compose)容器在几秒钟后closures。 这是我的服务器Dockerfile : FROM alpine:3.5 MAINTAINER Maybe One <maybe@maybe.com> # Java Version and other ENV ENV JAVA_VERSION_MAJOR=8 \ JAVA_VERSION_MINOR=102 \ JAVA_VERSION_BUILD=14 \ JAVA_PACKAGE=jdk \ JAVA_JCE=standard \ JAVA_HOME=/opt/jdk \ PATH=${PATH}:/opt/jdk/bin \ GLIBC_VERSION=2.23-r3 \ LANG=C.UTF-8 RUN apk upgrade –update && \ apk add –update libstdc++ curl ca-certificates bash && \ for pkg in glibc-${GLIBC_VERSION} […]

生成随机不重叠的docker绑定端口

我正在尝试从我的REST服务方法中创build并启动一个容器。 我的REST服务驻留在Unix机器上,并且会有多个来自外部系统的请求,使用同一台机器上的REST服务来configuration和启动机器中的多个Docker容器。 我的问题是如何决定哪个端口可以启动我的容器。 每个对我的REST方法的请求都应该在一个以前请求中没有使用的唯一端口上启动一个容器。 如果我生成一个随机端口号,那么我需要一些方法来确保不会重新生成相同的号码,否则会造成端口冲突。 我需要每次产生一个随机的端口号,不重复的,把使用的端口列表存储在某个地方,每次产生一个随机数时检查一下列表,以确保端口没有被使用,当容器停止时释放端口更新“使用中的端口”列表以删除已停止的容器)。 任何想法如何在Java中完成这一点? 提前致谢