Node.js docker compose网络错误无法连接到其他主机

Node.js docker compose网络错误无法连接到其他主机,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我是docker的新手,在连接到云服务上的托管数据库集群时遇到了问题,云服务与docker机器和网络分离 因此,最近我尝试使用docker compose,因为每次更新时手动编写docker运行命令都很麻烦,所以我配置了yml文件 每当我使用docker compose时,我都会遇到连接到数据库时出现此错误的问题 Unhandled error event: Error: connect ENOENT %22rediss://default:password@test.ondigitalocea

我是docker的新手,在连接到云服务上的托管数据库集群时遇到了问题,云服务与docker机器和网络分离

因此,最近我尝试使用docker compose,因为每次更新时手动编写docker运行命令都很麻烦,所以我配置了yml文件

每当我使用docker compose时,我都会遇到连接到数据库时出现此错误的问题

Unhandled error event: Error: connect ENOENT %22rediss://default:password@test.ondigitalocean.com:25061%22
但是如果我在dockerfile中使用ENV在实际的docker run命令上运行它,那么一切都会正常工作

docker run -d -p 4000:4000 --restart always test
但我不想将所有机密数据与dockerfile上的所有细节一起公开到代码存储库中

这是我的docker文件和docker文件

version: '3.8'
services:
    app:
        container_name: kibblepaw-graphql
        restart: always
        build: .
        ports: 
            - '4000:4000'
        environment: 
            - PRODUCTION="${PRODUCTION}"
            - DB_SSL="${DB_SSL}"
            - DB_CERT="${DB_CERT}"
            - DB_URL="${DB_URL}"
            - REDIS_URL="${REDIS_URL}"
            - SESSION_KEY="${SESSION_KEY}"
            - AWS_BUCKET_REGION="${AWS_BUCKET_REGION}"
            - AWS_BUCKET="${AWS_BUCKET}"
            - AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
            - AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
dockerfile

FROM node:14.3.0
WORKDIR /kpb
COPY package.json /kpb
RUN npm install
COPY . /kpb
CMD ["npm", "start"]
docker compose

version: '3.8'
services:
    app:
        container_name: kibblepaw-graphql
        restart: always
        build: .
        ports: 
            - '4000:4000'
        environment: 
            - PRODUCTION="${PRODUCTION}"
            - DB_SSL="${DB_SSL}"
            - DB_CERT="${DB_CERT}"
            - DB_URL="${DB_URL}"
            - REDIS_URL="${REDIS_URL}"
            - SESSION_KEY="${SESSION_KEY}"
            - AWS_BUCKET_REGION="${AWS_BUCKET_REGION}"
            - AWS_BUCKET="${AWS_BUCKET}"
            - AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
            - AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"

您不应该在docker compose中包含环境变量值的

这应该起作用:

version: '3.8'
services:
    app:
        container_name: kibblepaw-graphql
        restart: always
        build: .
        ports: 
            - '4000:4000'
        environment: 
            - PRODUCTION=${PRODUCTION}
            - DB_SSL=${DB_SSL}
            - DB_CERT=${DB_CERT}
            - DB_URL=${DB_URL}
            - REDIS_URL=${REDIS_URL}
            - SESSION_KEY=${SESSION_KEY}
            - AWS_BUCKET_REGION=${AWS_BUCKET_REGION}
            - AWS_BUCKET=${AWS_BUCKET}
            - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
            - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}

啊,我想我现在明白错误了。这就是我看到%22的原因。