#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. Ах, я думаю, что теперь я понял ошибку. Вот почему я вижу «.