J'ai un projet mis en place avec CircleCI que j'utilise pour auto-deploy to Elastic Beanstalk. Mon environnement EBS est un conteneur unique, évolutif et environnement Web. Je suis en train de lancer un service qui écoute sur le port raw socket 8080.Déploiement de Docker sur AWS Elastic Beanstalk - comment transférer un port vers un hôte? (port binding)
Mon Dockerfile:
FROM golang:1.4.2
...
EXPOSE 8080
Mon Dockerrun.aws.json.template:
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "<bucket>",
"Key": "<key>"
},
"Image": {
"Name": "project/hello:<TAG>",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
Je me suis assuré de exposer le port 8080 sur le "rôle" assigné à mon environnement de projet.
J'ai utilisé le script de déploiement exact du tutoriel CircleCI ci-dessus (sauf avec les noms changés).
Dans l'instance EC2 qui exécute mon application EBS, je peux voir que le conteneur Docker s'est exécuté avec succès, sauf que Docker n'a pas transmis le port exposé au conteneur hôte. J'ai rencontré ceci dans le passé quand j'ai couru docker run ....
sans le drapeau -P
.
Voici un exemple de session après-tion SSH dans la machine:
[[email protected] ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a036bb061aea aws_beanstalk/staging-app:latest "/bin/sh -c 'go run 3 days ago Up 3 days 8080/tcp boring_hoover
[[email protected] ~]$ curl localhost:8080
curl: (7) Failed to connect to localhost port 8080: Connection refused
Ce que j'attends de voir est le ->8080
ou quoi que dans le récipient qu'il transmet sur l'hôte.
Quand je fais docker inspect
sur mon récipient, je vois aussi que ces deux configurations ne sont pas ce que je veux:
"PortBindings": {},
"PublishAllPorts": false,
Comment puis-je déclencher un port obligatoire dans ma demande?
Merci d'avance.