Tengo un contenedor Docker especificado a través de Dockerfile que debe ejecutarse con el indicador -p para que funcione correctamente. En mi máquina local, después de ejecutar
docker run -d -p 5000:5000 blagtagger:v0.4.3 la asignación de puertos se muestra como 0.0.0.0:5000->5000/tcp y todo funciona sin problemas.
Ahora, necesito implementarlo en AWS Elastic Beanstalk, así que preparé mi archivo Dockerrun.aws.json de la siguiente manera:
{ "AWSEBDockerrunVersion": "1", "Ports": [ { "ContainerPort": 5000, "HostPort": 5000 } ] } Sin embargo, el puerto del contenedor no parece asignarse correctamente al puerto del host. La asignación de puertos se muestra como 5000/tcp .
¿Cómo puedo pedirle a Beanstalk que establezca el mapeo en 0.0.0.0:5000->5000/tcp ?
Resulta que no hay una manera elegante de lograr esto. En la línea de las respuestas aquí y aquí , agregué lo siguiente en un archivo llamado .ebextensions/01-commands.config :
commands: 00001_add_port_mapping: cwd: /tmp command: 'sed -i "s/docker run -d/docker run -p 5000:5000 -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh' y descartó el archivo Dockerrun.aws.json .