簡體   English   中英

在AWS EB上部署docker時如何映射端口

[英]how to map ports when deploying docker on AWS EB

我有一個服務,我想部署在彈性beanstalk環境中。 如果我想在本地構建它,我會使用這一行:

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

我用configfile添加了映射:

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

好吧,除了用configfile添加映射外,我還需要添加一個監聽器。 所以我的最終結構如下:

- .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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM