我正在尝试使用 docker-compose 在容器内运行 zookeeper 和 spring 云服务。当我运行服务 jar 文件并启动动物园时,一切都很好。但是,当我尝试在容器中运行时,服务无法连接到动物园 -
这是 docker-compose up 时的错误:
controller_1 | 2020-07-21 09:45:12.715 WARN 1 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
controller_1 |
controller_1 | java.net.ConnectException: Connection refused
controller_1 | at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_111-internal]
controller_1 | at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_111-internal]
controller_1 | at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) ~[zookeeper-3.4.8.jar!/:3.4.8--1]
controller_1 | at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141) ~[zookeeper-3.4.8.jar!/:3.4.8--1]
controller_1 |
这是我的 yaml.file
version: '3'
services:
zookeeper:
image: 'zookeeper:3.4'
ports:
- "2181:2181"
restart: always
container_name: zookeeper
environment:
ZOOKEEPER_SASL_ENABLED: 'FALSE'
controller:
build: distributed-search-engine-1/
ports:
- "8083:8083"
links:
- zookeeper
depends_on:
- zookeeper
服务的 Docker 文件:
FROM java:8-jdk-alpine
COPY ./build/libs/distributed-search-engine-1-0.0.1-SNAPSHOT.jar /usr/app/
WORKDIR /usr/app
EXPOSE 8083
ENTRYPOINT ["java", "-jar", "distributed-search-engine-1-0.0.1-SNAPSHOT.jar"]
我的服务没有定义任何 Zookeeper 端口,所以我猜 2181 应该没问题。无论如何,这是我的构建文件:
buildscript {
ext {
springBootVersion = '2.0.0.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.search'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/milestone" }
}
ext {
springCloudVersion = 'Finchley.M8'
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-integration')
compile group: 'org.springframework.integration', name: 'spring-integration-zookeeper'
compile('org.springframework.cloud:spring-cloud-starter-zookeeper-config')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
jar {
manifest {
attributes "Main-Class": "com.search.server.Application"
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
谢谢!!!!