Tag: spring

在Docker环境中,Spring ResourceUtils或DefaultResourceLoader无法获取类path资源

我正在开发一个spring-boot web应用程序,我需要获取一些classpath资源,所以我使用下面的方法: @Autowired private Enviroment env; String fileLocation = ResourceUtils.getFile(env.getProperty("common.cert-location")).getAbsolutePath(); 要么 String fileLocation = new DefaultResourceLoader().getResource("filename").getFile().getPath(); 他们两个在本地环境中正常运行,但是当我打包应用程序并在Docker镜像中运行它时,它会抛出exception。 我如何获得资源? 谢谢!

将application.properties外部化为docker env

我正在开发一个使用spring-boot和Docker的应用程序。 出于安全原因,我不想使用更多的application.properties,只使用environnementvariables。 如果您有最佳做法,我将不胜感激。 这是我的docker-compose.yml snipet version: "2.1" services: app_users: image: images/app_users container_name: app_user_ctn build: context: ../.. dockerfile: docker/dev/Dockerfile ports: – "30333:8080" external_links: – mysql environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql/myDB?autoReconnect=true SPRING_DATASOURCE_USERNAME: mysqluser1 SPRING_DATASOURCE_PASSWORD: mysqlpwsword SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver LDAP_PASSWORD: ldapPswd LDAP_URLS: ldap://myServer:389 LDAP_USERNAME: cn=admin,dc=com,dc=expl 当我向ldap发出请求时,我得到NulPointerException,因为ldap environnementvariables没有初始化。 当我使用application.yml它的作品。 … spring: ldap: password: ldapPswd urls: ldap://myServer:389 username: cn=admin,dc=com,dc=expl …. 你有什么想法吗? 最好的祝福

为什么我得到错误:运行docker映像时找不到或加载主类.jar

我写了我的docker文件如下: From java:8 EXPOSE 8081 ADD /target/Demo-0.0.1-SNAPSHOT.jar Demo.jar ENTRYPOINT ["java",".jar","Demo.jar"] (“Demo”是我的项目名称,它创build了一个Spring启动应用程序。) 我正在使用Linux机器。

redirect_uri的参数值无效:非公开域不允许 – Spring社交login

我在client.yml中添加了clientID和clientSecret(在Google Developer Console中创build),但我无法工作。 在本地一切都很好,但如果我把应用程序在服务器上的redirecturl不起作用,并redirect使用服务器上的机器的名称(我用docker)。 Invalid parameter value for redirect_uri: Non-public domains not allowed: http://machine-name:8080/signin/google. 我该如何解决这个问题?

访问在Docker容器中运行的Spring-Boot WebApplication

所以我得到了一个部署到Docker容器中的正在运行的Spring-Boot应用程序。 我将应用程序的端口映射到运行多个Docker容器的portainer上的一个端口。 一切似乎都很好,但如果我尝试访问WebApplication我得到一个连接拒绝错误。 Docker端口映射到应用程序端口: DockerFile: FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD target/r750explorer-1.0.war app.war RUN sh -c 'touch /app.war' ENV JAVA_OPTS="" EXPOSE 8750 ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.war" ] 我可以通过Portainer日志validation应用程序在Docker中运行。 一切都是由Jenkins运行这些命令来构build的: sh 'docker rm -f ' + dockerInstanceName + ' && echo "container ' + dockerInstanceName + ' removed" || echo "container ' + […]

MessageListenerContainer在docker env中不会侦听redis sentinel中的master redis实例

我有个问题。 我在docker env中设置了redis sentinel。 (没有docker,事情工作正常)从spring我使用Jedis和Redis的定点支持。 RedisMessageListenerContainer应该照顾用户部分。 但是,在closuresredis主节点之后,我能够从连接工厂输出新的ip和端口(即,ip和端口指的是新的主节点)。 但是…经常…所有的用户都不再听了。 有没有人在docker遇到这个问题? 谢谢 :)

RabbitMQ,docker,单队列,多个消费者

我们在我们的系统中使用了Docker,Spring和RabbitMq。 我是AMQP的新手,我试图弄清楚交换,队列,绑定和连接是如何在我们的系统中工作的。 我们有多个dockerized应用程序。 简而言之,当应用程序启动的时候,他们每个人都开始听同一个队列,我不明白他们怎么能期望收到相同的消息。 在stackoverflow有一些类似的问题,给我的印象是,我们目前的系统可能有缺陷。 更详细地说: Docker容器启动时,不同容器中的多个应用程序使用RabbitAdmin declare the same exchange: rabbitAdmin.declareExchange(exchange) declare the same queue: rabbitAdmin.declareQueue(queue) bind those together: rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exhange).with("theSameKey"); 他们这样做是因为他们想听同样的信息。 据我所知,只有一个dockerized程序pipe理创build交换和队列,其余的尝试,但没有任何效果。 之后,这些应用程序中的每一个都会为队列创build并启动SimpleMessageContainers: simpleMessageContainer.setMessageListener(messageListener) simpleMessageContainer.addQueueNames(queue.getName()) simpleMessageContainer.start() 使用rabbitmqctl和rabbitmq的web界面,我可以看到单个队列在不同的渠道上有多个消费者,对应不同的docker容器。 是不是这样,messageListener驻留在应用程序中,但是当调用addQueueNames时,RabbitMq为代理中的队列创build一个Consumer,然后这个Consumer通过与应用程序本地messageListener的连接转发消息? 由于不同Docker容器中的多个应用程序都这样做,因此同一队列中有多个Consumers,就像我在rabbitmqctl中看到的一样。 我不明白的是,RabbitMq不是以循环的方式将消息传递到队列中的消息队列,所以只有一个docker应用程序会收到它? 这些交stream是直接的,话题types,没有扇出交stream。 如果所有dockerized应用程序想要接收相同的消息,那么不应该为自己的队列名称使用相同的exhance为相同的exhance创build一个自己的队列,但使用相同的路由密钥? 我没有看到目前的实施可能正常工作。

如何在Docker Stack(Swarm)中依次加载服务

我有一个Docker Stack的YML文件,它有大约20个不同的服务。 有configuration服务器,API网关和许多微服务(SPRING体系结构)等依赖项。 (我的YML文件的一部分) version: "3" services: config-service: image: 192.168.0.1:5000/config-service:1.0.7 ports: – "8888:8888" networks: – my-gateway-network environment: – CONFIG_SERVICE_SECURITY_BASIC_ENABLED=false – – JAVA_OPTS=-Xmx256m -Xms256m deploy: mode: replicated replicas: 1 healthcheck: test: curl -s http://localhost:8888 interval: 15s retries: 20 oauth-service: image: 192.168.0.1:5000/oauth-service:1.0.0 ports: – "1116:8080" networks: – my-gateway-network environment: – JAVA_OPTS=-Xmx128m -Xms128m – CONFIG_SERVICE_URL=config-service:8888 volumes: – /opt/authkeys:/opt/authkeys […]

Docker-compose up:连接被拒绝

我正在使用Docker-compose在我的项目中,当我试图在一个项目中连接到我的VBox“本地主机:22000”主机,它会导致exception连接被拒绝 version: '2' services: mongodb: image: mongo ports: – "27017:27017" command: mongod –smallfiles rabbitmq: image: rabbitmq:3.5.3-management ports: – "5672:5672" – "15672:15672" broker: image: java:openjdk-8u91-jdk depends_on: – mongodb – rabbitmq working_dir: /app volumes: – ./blockchain-rabbitmq/target/:/app command: java -jar /app/blockchain-rabbitmq-0.0.1.jar ports: – "8484:8484" links: – rabbitmq – mongodb environment: SPRING_DATA_MONGODB_URI: mongodb://mongodb/ethereum RABBIT_HOST: rabbitmq SPRING_RABBITMQ_HOST: rabbitmq nfb: image: […]

在Docker Swarm上使用Consul的Spring Cloud微服务的方法1.12 ++

我在Spring云生态系统上有几个微服务器,作为configuration服务器和注册服务器,我有Consul。 此外,我有4个节点和3个代理作为服务器模式的Docker Swarm和1个作为每个节点的客户模式的代理代理。 我的问题是什么:我尝试在consul实例上的每个节点上运行Docker容器,例如: docker run -d –name consul -h node1 -p 8500:8500 -p … progrium/consul -server -advertise ${CONSUL_MASTER} -bootstrap-expect 3 并与其他领事代理人一起主要领事: docker run -d –name consul -h node2 -p 8500:8500 -p … progrium/consul -server -advertise $(docker info –format "{{.Swarm.NodeAddr}}") -join ${CONSUL_MASTER} 然后在Docker Swarm中将我的微服务部署为堆栈: docker stack deploy –compose-file docker-compose.yml my_stek 我在每个微服务中的bootstrap.yml是: spring: application: name: service-name […]