Node.js docker compose网络错误无法连接到其他主机
我是docker的新手,在连接到云服务上的托管数据库集群时遇到了问题,云服务与docker机器和网络分离 因此,最近我尝试使用docker compose,因为每次更新时手动编写docker运行命令都很麻烦,所以我配置了yml文件 每当我使用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
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的原因。