ошибка docker-compose network не удается подключиться к другому хосту

#node.js #docker #docker-compose

#node.js #docker #docker-compose

Вопрос:

Я новичок в docker, и у меня возникли проблемы с подключением к моему кластеру управляемых баз данных в облачных сервисах, который был отделен от компьютера docker и сети.

Итак, недавно я попытался использовать docker-compose, потому что вручную писать команду docker run для каждого обновления — это хлопотно, поэтому я настраиваю файл yml.

Всякий раз, когда я использую docker compose, у меня возникают проблемы с подключением к базе данных с этой ошибкой

 Unhandled error event: Error: connect ENOENT "rediss://default:password@test.ondigitalocean.com:25061"
  

Но если я запущу его с помощью фактической команды docker run с помощью ENV в dockerfile, тогда все будет работать нормально.

 docker run -d -p 4000:4000 --restart always test
  

Но я не хочу предоставлять все конфиденциальные данные в хранилище кода со всеми подробностями в dockerfile.

Вот мой dockerfile и docker-compose

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}"
  

Ответ №1:

Вы не должны включать " для значений ваших переменных среды в свой 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}
  

Комментарии:

1. Ах, я думаю, что теперь я понял ошибку. Вот почему я вижу «.