[英]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.