Tag: spring

Docker容器 – 在旧的java6版本上运行新的java8代码

我有一个新的java8 web应用程序(春季启动),需要运行在一个旧的环境应用程序框有java 6。 java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode) Distributor ID: Ubuntu Description: Ubuntu 12.04.5 LTS Release: 12.04 Codename: precise 我在docker的使用业余,但听说你在Docker容器中运行应用程序,并给你想要的configuration。在这种情况下,我想在已经安装的java6上运行java8。 请build议可能吗? 如果是的话提供一些参考开始。

在Docker中创buildREST调用端点

我正在构build一个Spring Boot应用程序,它有几个不同的REST端点。 它可以在本地打包并成功启动为jar文件。 在本地运行时,我可以通过“ http:// localhost:8080 / endpoint?params ..”来访问它的端点。 我的任务是现在准备这个应用程序运行Dockers。 仍然在我的本地机器上工作,我创build了一个基于Java:8映像的Dockers容器。 在这个容器中,我已经能够成功地从.jar运行我的应用程序。 我的问题是,当应用程序托pipe在Docker之外时,我不明白如何调用应用程序内的REST端点,因为逻辑上localhost:8080 / endpoint不再响应该调用。 辅助信息:我的本地计算机是Windows,Docker镜像是Ubuntu(最终将会启动到Linux服务器上)。 更新:用下面的Dockerfile创build一个新的镜像: FROM openjdk:8 MAINTAINER My Name email@email.com COPY . /usr/src/myapp WORKDIR /usr/src/myapp EXPOSE 8080 RUN javac Main.java CMD ["java", "Main"] 同样的问题,无法通过http:// localhost:8080 / endpoint访问端点 任何帮助将不胜感激。 谢谢!

从另一个Docker访问一个Docker中的MariaDB

我有两个Docker容器。 一个是基于标准的MariaDB映像。 容器被命名为“mariadb”,其中一个数据库名为“fi”。 在这个文件里面有几个表格,每个表格都有几行数据。 使用DataGrip或任何其他数据库查看软件,我可以成功地访问和查询这个数据库使用端口3306在本地主机上调用它。 我的第二个Docker容器运行一个Spring Boot应用程序,它需要访问MariaDB中的数据。 如果我在Docker中运行MariaDB,并在主机上运行Spring Boot应用程序,我可以使用连接string成功访问docker中的MariaDB:“jdbc:mariadb:// localhost:3306 /?user = myUsername&password = myPassword ”。 我的问题是,当我尝试在不同的Docker中运行它们时,Spring Boot应用程序无法访问数据库。 我发现很多人说“连接”这两个docker工人,但这似乎并没有解决问题。 当我运行Spring Boot docker时,我执行命令“docker run -i -p 8080:8080 – 链接mariadb:db javaImage / bin / bash”。 由于与此问题无关的原因,我正在发布8080端口。 从我所了解的情况来看,他们现在应该是我的Spring Boot docker中的一个环境variables,可以用关键字“db”访问,这个环境variables将被MariaDB泊坞窗的实际ip所替代。 到目前为止,在我的Java代码中,使用连接string“jdbc:mariadb:// db:3306 / fi?user = myUsername&password = myPassword”来连接(或者很好地尝试)。 这将返回错误“无法连接:未知的数据库'fi'”,这是奇怪的,因为如果这个连接是真正连接到MariaDB泊坞窗,fi数据库将被发现。 任何帮助表示赞赏。 谢谢! 编辑:代码片段 Connection connection = DriverManager.getConnection("jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword"); Statement stmt […]

在Docker Ubuntu主机上的jni4net

我有一个使用SpringBoot在Java 8中开发的应用程序,使用jni4net来消费一个dll库。 这是posibble在Ubuntu中运行该应用程序的docker容器? 谢谢

Docker容器访问外部MySQL主机

我已经在EC2实例(EC2_IP)中设置了一个spring-boot docker容器,而且我有一个托pipe在不同虚拟机中的MySQL。 我validation了可以从托pipedocker容器的EC2实例访问mysql主机(MYSQL_IP)。 我在docker运行期间使用docker环境variables传递spring.datasource.url参数。 春季启动应用程序无法向用户db_user @ EC2_IP拒绝错误消息访问。 这是我无法理解和修复的部分。 我不明白为什么它试图连接到EC2_IP而不是db_user @ MYSQL_IP 。 我做了一个docker检查,并validationspring.datasoure.url的环境variables正确传递,它是db_user @ MYSQL_IP:3306。 我花了几个小时试图解决这个问题,但没有运气。 任何帮助表示赞赏。 要根据评论澄清,我已经正确configuration了数据源。 在docker检查里面,Args的价值: -Dspring.datasource.url = JDBC:MySQL的:// MYSQL_IP:3306 /testing 此外,我检查是否通过一些无效的IP(例如)一些随机的文本,然后它会抛出一个错误,说主机是无效的(这证实,它是采取主机,我通过)。 但是,如果我configuration为外部IP,它似乎parsing为主机IP地址(EC2_IP)。

在Dockerfile中覆盖inheritance的CMD并不总是工作?

我在派生的Dockerfile中覆盖CMD时遇到了一些不一致的行为。 基本的Dockerfile看起来像这样: FROM myVeryBaseImage ENV WEBAPP_CONTEXT=my-app WORKDIR /opt/${WEBAPP_CONTEXT} COPY app/*.jar ./${WEBAPP_CONTEXT}.jar COPY baseconfig/* ./config/${WEBAPP_CONTEXT}/ CMD java -jar ${WEBAPP_CONTEXT}.jar –Dspring.profiles.active=docker 这个基础图像是由另一个团队提供的,很难改变它。 我现在正在编写一堆容器,我想要多次运行相同的应用程序,但使用不同的configuration。 所以我想我会延长图像复制一些更多的configuration到它并运行一个不同的弹簧configuration文件: FROM baseImage COPY config/application-*.properties ./config/${WEBAPP_CONTEXT}/ CMD java -jar ${WEBAPP_CONTEXT}.jar -Dspring.profiles.active=${PROFILE} 在docker-compose.yml中: myapp-foo: build: ./myapp-custom image: myapp-custom environment: PROFILE: foo volumes: – /opt/my-app/foo:/opt/my-app myapp-bar: image: myapp-custom environment: PROFILE: bar volumes: – /opt/my-app/bar:/opt/my-app 我希望有两个容器运行,分别使用application-foo.properties和application-bar.properties 。 […]

运行SpringBootApplication PostConstruct和PreDestroy

我在运行docker容器中的spring应用程序时遇到了麻烦(spring和docker在我的环境中都有最新版本)。 我想为应用程序类创build一个健康的生命周期AnalysisServiceBootstrap:使用方法start()运行初始化代码在创buildAnalysisServiceBootstrap之后运行方法stop()right在销毁AnalysisServiceBootstrap之前(我想运行stop()停止应用程序)。 我有以下代码: package com.pack; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; @SpringBootApplication public class AnalysisServiceBootstrap { // called OK on docker "start <containerId>" @PostConstruct public void start() throws Exception { // some init code } // NOT called on "docker stop <containerId>" @PreDestroy public void stop() { // some […]

Spring在Docker容器中看不到application.properties

我试图在Docker中运行一个spring-boot应用程序,我的应用程序有几个属性存储在它的jar包所附带的application.properties中。 它只运行在java(java -jar appname.jar)上, 然而,在dockerizing应用程序之后,spring不能正确地看到application.properties文件 对于这里感兴趣的是我的dockerfile FROM java:7 EXPOSE 8080 VOLUME /tmp ADD appname.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] 当我试图运行它,我得到 nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'auth.login.key' in string value "${auth.login.key}" 我是否需要单独安装application.properties? 这似乎有点肮脏,因为属性文件是有意义的与jar一起发货,而不是活在主机文件系统上。 也许摆弄春季启动的设置? (我正在使用所有的默认设置)

如何将docker上的spring应用程序连接到docker上的activemq集群

我有一个简单的REST应用程序在Docker容器中的Tomcat8上运行。 我也有3个docker容器,分别在端口61617和61618 master slave上运行ActiveMQ 5.11.1代理(使用mysql作为持久化)。 docker run –name myRESTApp -t -i –rm -p 8080:8080 -p 9090:9090 -v $(pwd)/webapps:/usr/local/tomcat/webapps -v $(pwd)/logs:/usr/local/tomcat/logs –link activemq1:activemq myRESTApp 在myRESTApp的activeMQConfiguration.xml : <property name="brokerURL" value="failover:(#{systemEnvironment['ACTIVEMQ_PORT_61616_TCP']})?randomize=false"/> 3个ActiveMQ代理在他们的activemq.xml有这个: <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:0" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" /> </transportConnectors> 主人最初是在61616运行,我停止了主人,奴隶(港口61617 )成为新的主人。 甚至在61616的主人被停止之前,它就投掷了 Connect fail to: tcp://172.17.0.84:61616, reason: java.net.ConnectException: Connection refused 为什么链接后,它仍然无法连接到经纪人? 在61616上的主站停止后,将失败: Connect fail to: tcp://172.17.0.84:61616, […]

@EnableDiscoveryClient spring启动服务注册

我正在使用@EnableDiscoveryClient netflix服务发现和@EnableDiscoveryClient批注,将一个Spring启动应用程序运行到@EnableDiscoveryClient容器中。 运行我的应用程序,它使用特定的ip地址(docker容器的地址)注册到eureka。 我想改变这个IP到主机的IP地址,这样我的应用程序将被注册到尤里卡与主机的IP地址是我的容器正在运行。