Docker compose extra_hosts не изменяет файл / etc / hosts - PullRequest
1 голос
/ 26 мая 2020

Я использую приложение Nodejs с docker для развертывания на AWS ecs.

Проблема в том, что вызов api для возврата частной записи DNS error: getaddrinfo enotfound request

Похоже, что ошибка исследования связана с поиском DNS (пожалуйста, не стесняйтесь комментировать, если у вас есть другая теория), поэтому я решил установить DNS-серверы и µextra_hostsµ при создании.

Даже если все строится, когда я cat / etc / hosts в Dockerfile он не изменился.

Вопросы:

  1. Следует ли изменять / etc / hosts с помощью extra_hosts.
  2. Может быть другая причина ошибки: getaddrinfo enotfound request? Все остальные вызовы api работают, кроме внутреннего DNS, который работает один раз, а после возвращает ошибку: getaddrinfo enotfound.
  3. Как лучше всего настроить DNS и хост с docker?
  4. Почему он работает один раз и останавливается после?

так выглядит мой docker -компоновочный файл:

version: '3'
services:
  nodejs:
    extra_hosts:
      - "<name here>:<ip here>"
      - "<name here>:<ip here>"
    dns:
      - <ip here>
      - <ip here>
      - <ip here>
    network_mode: 'host'
    build:
      context: .
      dockerfile: Dockerfile

Вот как docker файл выглядит

FROM alpine:latest
RUN apk add --update nodejs nodejs-npm && apk add g++ make python
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .

RUN cat /etc/hosts
EXPOSE 80
CMD npm start

Вот результат сборки docker

Sending build context to Docker daemon  11.58MB
Step 1/11 : FROM alpine:latest
 ---> f70734b6a266
Step 2/11 : RUN apk add --update nodejs nodejs-npm && apk add g++ make python
 ---> Using cache
 ---> b173538c6ce5
Step 3/11 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 0186bcca617d
Step 7/11 : RUN npm install
 ---> Using cache
 ---> 546f707d5fea
Step 8/11 : COPY . .
 ---> b66f4bec9d93
Step 9/11 : RUN cat /etc/hosts
 ---> Running in 1c48f0426713
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  1c48f0426713
Removing intermediate container 1c48f0426713
 ---> 858735acc4a6
Step 10/11 : EXPOSE 80
 ---> Running in dd7a8ae0669a
Removing intermediate container dd7a8ae0669a
 ---> 907a3dafb4fc
Step 11/11 : CMD npm start
 ---> Running in a3dd69c6ec3b
Removing intermediate container a3dd69c6ec3b
 ---> cda2214b2761
Successfully built cda2214b2761
Successfully tagged test:latest

1 Ответ

0 голосов
/ 29 мая 2020

Оказывается, что aws fargate имеет только одну сеть, это awsvp c, и он не позволяет изменять файл хоста или спецификацию DNS-сервера.

Стоит упомянуть, что после множества исследований мы провели не пробуйте это предложение

Не уверен, работает ли оно, но все же ...

...