как сопоставить порты при развертывании докера на AWS EB - PullRequest
0 голосов
/ 07 июня 2019

У меня есть служба, которую я хочу развернуть в среде эластичного бобового стебля.Если я хочу построить его локально, я бы использовал эту строку:

docker run --detach --name my-nlx-inway (some env en volume parameters) --publish 4443:8443 nlxio/inway:latest

Я попытался установить все это в Dockerfile:

FROM nlxio/inway:latest
ENV NAME my-nlx-inway
EXPOSE 4443

Когда я развертываю все идет гладко, мойСервис зарегистрирован только в оффлайне.Я думаю, что это в отображении.С помощью команды я говорю --publish 4443:8443, а в Dockerfile я говорю только EXPOSE 4443.

Поэтому я попытался создать dockerrun.aws.json

{
  "AWSEBDockerrunVersion": "1", 
  "Ports": [
    {
      "ContainerPort": 8443,
      "HostPort":4443
    }
  ]
}

Я добавил отображение с помощью файла конфигурации:

container_commands:
  00001_add_mapping:
    command: 'sed -i "s/docker run -d/docker run -p 4443:8443 -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'

И я вижу результат в журнале:

'docker ps' ran at Tue Jun 11 12:20:02 UTC 2019: 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
741a52caf467        f06676e20291        "/usr/local/bin/nlx-…"   11 minutes ago      Up 11 minutes       4443/tcp, 0.0.0.0:4443->8443/tcp   optimistic_johnson

1 Ответ

0 голосов
/ 19 июня 2019

хорошо, кроме добавления сопоставления с помощью файла конфигурации, мне нужно было добавить прослушиватель. Итак, моя окончательная структура выглядит так:

- .ebextensions
  |-commands.config
- Dockerfile

А мой commands.config выглядит так:

container_commands:
  00001_add_mapping:
    command: 'sed -i "s/docker run -d/docker run -p 4443:8443 -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'
option_settings:
  aws:elb:listener:4443:
    ListenerProtocol: TCP
    InstancePort: 4443
...