【问题标题】:Inside Docker container NetworkingError: connect ECONNREFUSED 127.0.0.1:8002内部 Docker 容器 NetworkingError: connect ECONNREFUSED 127.0.0.1:8002
【发布时间】:2018-09-23 11:34:36
【问题描述】:

我正在构建一个在 docker 容器中运行的 nodejs 应用程序并出现以下错误

NetworkingError: 连接 ECONNREFUSED 127.0.0.1:8000"

如果我尝试使用 dynamodb-local:8000 那么它会给我以下错误

NetworkingError:写入 EPROTO 140494555330368:错误:1408F10B:SSLroutines:ssl3_get_record:错误 版本号:../deps/openssl/openssl/ssl/record/ssl3_record.c:252:

我正在使用以下 docker-compose.yml

        version: "3"

        services:
        node_app:
            build: .
            container_name: 'node_app'
            restart: 'always'
            command: 'npm run start:local'
            ports:
            - "3146:3146"
            links:
            - dynamodb-local
        dynamodb-local:
            container_name: 'dynamodb-local'
            build: dynamodb-local/
            restart: 'always'
            ports:
            - "8000:8000"

Node js docker配置如下,node_app

        FROM node:latest

        RUN mkdir -p /app/node_app

        WORKDIR /app/node_app


        # Install app dependencies
        COPY package.json /app/node_app
        #RUN npm cache clean --force && npm install
        RUN npm install


        # Bundle app source
        COPY . /app/node_app

        # Build the built version
        EXPOSE 3146
        #RUN npm run dev

        CMD ["npm", "start"]

Dynamo DB本地docker配置如下,dynamodb-local

        #
        # Dockerfile for DynamoDB Local
        #
        # https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/
        #
        FROM openjdk:7-jre

        RUN mkdir -p /var/dynamodb_local
        RUN mkdir -p /var/dynamodb_picstgraph

        # Create working space
        WORKDIR /var/dynamodb_picstgraph

        # Default port for DynamoDB Local
        EXPOSE 8000

        # Get the package from Amazon
        RUN wget -O /tmp/dynamodb_local_latest https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz && \
            tar xfz /tmp/dynamodb_local_latest && \
            rm -f /tmp/dynamodb_local_latest

        # Default command for image
        ENTRYPOINT ["/usr/bin/java", "-Djava.library.path=.", "-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/var/dynamodb_local"]
        CMD ["-port", "8000"]

        # Add VOLUMEs to allow backup of config, logs and databases
        VOLUME ["/var/dynamodb_local", "/var/dynamodb_nodeapp"]

但是当我尝试将 docker 容器外部连接到本地 dynamodb 时,它会完美运行。

请帮我解决这个问题。

【问题讨论】:

  • 在 docker 容器内,DB 将与主机 dynamodb-local:8000 一起可用
  • @DavidMaze 我也试过了,但无法解决我的问题
  • 您可以使用docker exec 进入节点容器并使用telnet 测试端口连接:例如:telnet dynamodb-local 8000telnet lolcahost 8000,如果可以,则问题出在您的数据库安装中。
  • 很好,那么容器有通信了,第二个错误似乎是一个SSL错误,你是用我们的HTTPS地址连接的任何证书吗?

标签: node.js docker docker-compose amazon-dynamodb aws-sdk


【解决方案1】:

在 docker 容器内,DB 将在主机dynamodb-local:8000 中可用。

这可能是 SSL 问题,如果您已将该端口用于其他应用程序,请检查您的 apache 配置。

对于这种情况,您可以在另一个端口上使用链接发电机,如下所示,

    #
    # Dockerfile for DynamoDB Local
    #
    # https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/
    #
    FROM openjdk:7-jre

    RUN mkdir -p /var/dynamodb_local
    RUN mkdir -p /var/dynamodb_picstgraph

    # Create working space
    WORKDIR /var/dynamodb_picstgraph

    # Default port for DynamoDB Local
    EXPOSE 8004

    # Get the package from Amazon
    RUN wget -O /tmp/dynamodb_local_latest https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz && \
        tar xfz /tmp/dynamodb_local_latest && \
        rm -f /tmp/dynamodb_local_latest

    # Default command for image
    ENTRYPOINT ["/usr/bin/java", "-Djava.library.path=.", "-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/var/dynamodb_local"]
    CMD ["-port", "8004"]

    # Add VOLUMEs to allow backup of config, logs and databases
    VOLUME ["/var/dynamodb_local", "/var/dynamodb_nodeapp"]

现在在您的 docker 容器中,DB 将可用于主机 dynamodb-local:8004

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2022-11-23
    • 2023-02-24
    • 1970-01-01
    • 2021-11-24
    • 2019-05-28
    相关资源
    最近更新 更多