我正在尝试使用领事作为发现服务,和另外两个Spring启动应用程序注册与领事;把它们放进码头;
以下是我的代码:app:
server:
port: 3333
spring:
application:
name: adder
cloud:
consul:
host: consul
port: 8500
discovery:
preferIpAddress: true
healthCheckPath: /health
healthCheckInterval: 15s
instanceId: ${spring.application.name}:${spring.application.instance_id:${server.port}}
consul1:
image: "progrium/consul:latest"
container_name: "consul1"
hostname: "consul1"
command: "-server -bootstrap -ui-dir /ui"
adder:
image: wsy/adder
ports:
- "3333:3333"
links:
- consul1
environment:
WAIT_FOR_HOSTS: consul1:8500
adder_1 | com.ecwid.consul.transport.TransportException: java.net.ConnectException: Connection refused
adder_1 | at com.ecwid.consul.transport.AbstractHttpTransport.executeRequest(AbstractHttpTransport.java:80) ~[consul-api-1.1.8.jar!/:na]
adder_1 | at com.ecwid.consul.transport.AbstractHttpTransport.makeGetRequest(AbstractHttpTransport.java:39) ~[consul-api-1.1.8.jar!/:na]
除了spring boot application.yml和docker-compose.yml之外,下面是app的Dockerfile
FROM java:8
VOLUME /tmp
ADD adder-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ADD start.sh start.sh
RUN bash -c 'chmod +x /start.sh'
EXPOSE 3333
ENTRYPOINT ["/start.sh", " java -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
开始的时候.sh
#!/bin/bash
set -e
wait_single_host() {
local host=$1
shift
local port=$1
shift
echo "waiting for TCP connection to $host:$port..."
while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null
do
echo "TCP connection [$host] not ready, will try again..."
sleep 1
done
echo "TCP connection ready. Executing command [$host] now..."
}
wait_all_hosts() {
if [ ! -z "$WAIT_FOR_HOSTS" ]; then
local separator=':'
for _HOST in $WAIT_FOR_HOSTS ; do
IFS="${separator}" read -ra _HOST_PARTS <<< "$_HOST"
wait_single_host "${_HOST_PARTS[0]}" "${_HOST_PARTS[1]}"
done
else
echo "IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!"
fi
}
wait_all_hosts
exec $1
我可以推断您的领事配置位于application.yml
中,而不是bootstrap.yml
,这就是问题所在。
根据这个答案,bootstrap.yml
是在application.yml
之前加载的,Consult client必须在应用程序本身之前检查其配置,因此要查看bootstrap.yml
。
工作bootstrap.yml的示例:
spring:
cloud:
consul:
host: consul
port: 8500
discovery:
prefer-ip-address: true
>
运行Consuler server,不要忘记与您的配置匹配的name选项:
Docker run-d-p 8500:8500--name=consult progrium/consult-server-bootstrap
Docker run-d-name=my-consul-client-app--link领事:consular acme/spring-app
我有两个docker容器,它们通过以下命令运行: > docker run——name postgres-v“/Users/xxx/Desktop/Coding/DockerMounting”:/home/-e postgres_PASSWORD=xyz-d postgres docker run-it-v“/Users/xxx/Desktop/Coding/DockerMounting”:/ho
我是码头工人的新手。我用的是Spring boot微服务。它在我的本地机器上运行良好。现在,我需要为我的应用程序创建一个docker图像。它依赖于Mysql服务器。我使用docker-compose来创建我的容器。在运行我的自定义映像(spring boot应用程序)时,我收到一个通信链接失败错误。Mysql镜像独立运行良好。 我的 yml 文件 : 应用程序属性文件 : 完整的错误消息: spr
我有一个Spring Boot应用程序与以下配置: 我希望与docker compose一起运行(docker 1.11.2,docker compose 1.7.1): 不幸的是,这不起作用,我得到:com。埃克维德。领事运输例外:java。网ConnectException:连接被拒绝。 我完全不知道为什么它不能连接到Consul,因为我可以通过这种方式连接到其他系统,例如其他应用程序中的Ra
我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题
我在我的应用程序中启用了应用链接。它工作正常。但是在我的应用程序中,有一些情况下我无法处理传入的网址。在这种情况下,我想将该网址重定向到设备中的默认浏览器。 目前,我尝试使用intent打开带有url的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式如下- 所以根据params,我想要么在应用程序本身中处理应用程序链接,要么将其重定向到默认浏览器。下面是我试图用上面的网址打开浏览器的代
问题内容: 我正在尝试为服务发现实施领事,而在两件事上遇到了麻烦:连接到自定义DNS服务器,以及格式化我的请求。 这是我要在go应用程序中查找的内容: 这是相关的代码。(我知道这是错误的,但是这样您就可以看到我正在尝试做的事情) 和输出: 任何帮助,将不胜感激!谢谢 问题答案: 尝试使用更锋利的工具,例如包裹。上次查看它时,它几乎可以控制客户端设置的每一位来进行DNS解析。