Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从DockedSpring引导连接DockedCouchbase服务器_Java_Spring Boot_Docker_Docker Compose_Couchbase - Fatal编程技术网

Java 如何从DockedSpring引导连接DockedCouchbase服务器

Java 如何从DockedSpring引导连接DockedCouchbase服务器,java,spring-boot,docker,docker-compose,couchbase,Java,Spring Boot,Docker,Docker Compose,Couchbase,我创建了一个简单的spring boot和couchbase应用程序,我想将其固定 我为Spring Boot创建Dockerfile: FROM maven:3.6.0-jdk-8-slim AS build RUN mkdir -p /workspace WORKDIR /workspace COPY pom.xml /workspace COPY src /workspace/src RUN mvn -f pom.xml clean package FROM openjdk:8 COPY

我创建了一个简单的spring boot和couchbase应用程序,我想将其固定

我为Spring Boot创建Dockerfile:

FROM maven:3.6.0-jdk-8-slim AS build
RUN mkdir -p /workspace
WORKDIR /workspace
COPY pom.xml /workspace
COPY src /workspace/src
RUN mvn -f pom.xml clean package

FROM openjdk:8
COPY --from=build /workspace/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
还有我的couchbase的dockerfile:

FROM couchbase

RUN chmod +x /entrypoint.sh
COPY configure-server.sh /opt/couchbase
RUN chmod +x /opt/couchbase/configure-server.sh

CMD ["/opt/couchbase/configure-server.sh"]
和Docker撰写:

version: '3.0'
services:
  couchbase:
    build: ./couchbase
    container_name: couchbase
    volumes:
      - ~/couchbase/node1:/opt/couchbase/var
    ports:
      - 8091:8091
      - 8092:8092
      - 8093:8093
      - 11210:11210

  todo_server:
    build: ./todo-backend
    container_name: todo_server
    depends_on:
      - couchbase
    ports:
      - 8080:8080
如果我尝试
docker组合couchbase
并在本地运行spring boot,它们会协同工作。但当我尝试使用docker compose up时,Spring应用程序无法连接到couchbase服务器

我猜这是由localhost引起的

我的沙发床配置在Spring上

@配置
公共类CouchbaseConfiguration扩展了AbstractCouchbaseConfiguration{
@凌驾
公共字符串getConnectionString(){
返回“couchbase://127.0.0.1";
}
@凌驾
公共字符串getUserName(){
返回“管理员”;
}
@凌驾
公共字符串getPassword(){
返回“密码”;
}
@凌驾
公共字符串getBucketName(){
返回“默认”;
}
@凌驾
受保护的布尔值autoIndexCreation(){
返回true;
}
}
我想我必须改变这个

公共字符串getConnectionString(){
返回“couchbase://127.0.0.1";
}
我只试了
couchbase
couchbase://couchbase
但它不起作用

控制台上的错误:

com.couchbase.client.core.deps.io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /127.0.0.1:11210
Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
        at com.couchbase.client.core.deps.io.netty.channel.unix.Errors.throwConnectException(Errors.java:124) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.unix.Socket.finishConnect(Socket.java:243) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:672) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:649) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:529) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[core-io-2.0.8.jar:na]
        at com.couchbase.client.core.deps.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[core-io-2.0.8.jar:na]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_212]



你能帮我吗?

我通过以下操作解决了这个问题

我的新Docker撰写文件:

version: '3.7'
services:
  db:
    build: ./couchbase
    container_name: todo-couchbase
    volumes:
      - ~/couchbase/node1:/opt/couchbase/var
    ports:
      - 8091:8091
      - 8092:8092
      - 8093:8093
      - 11210:11210
    networks:
      - my_network
  todo_server:
    build: ./todo-backend
    container_name: todo-backend
    environment:
      COUCHBASE_HOST: db
    depends_on:
      - db
    ports:
      - 8080:8080
    networks:
      - my_network

networks:
  my_network:
    driver: bridge
我改变了连接字符串

公共字符串getConnectionString(){
返回“db”;
}

Docker文档中描述了此处的网络环境。从
todo_服务器
容器的角度来看,
localhost
是自身,而不是另一个容器或物理主机。您应该能够使用另一个Compose服务名称
couchbase
作为主机名。如果使用“couchbase”作为连接字符串,会出现什么错误?我解决了这个问题,我更改了本地主机部分并更改了docker Compose文件,我将在评论中共享新的docker Compose