¿Por qué recibo un permiso denegado en la implementación de Docker?

He creado una aplicación en Elastic Beanstalk para alojar allí una aplicación de play framework 2 usando las instrucciones de este proyecto.

He empaquetado el proyecto exactamente como lo necesita Docker, pero cuando cargo el file zip final a la aplicación, recibo un error de permiso denegado en este flujo:

  • La actualización del entorno está comenzando.
  • Implementar nueva versión en instancia (s).
  • Extendido tirado por dockerfile / java: más reciente
  • Construido con éxito aws_beanstalk / staging-app
  • El contenedor Docker se cerró inesperadamente después del inicio: el contenedor Docker se cerró inesperadamente el viernes 12 de septiembre, 23:32:44 UTC 2014: 2014/09/12 23:32:39 ejecutor: "bin / my-sample-project": permiso denegado. Verifique los loggings de instantáneas para más detalles.

He pasado horas en esto sin ningún éxito.

Este es el contenido de mi raíz Dockerfile:

FROM dockerfile/java MAINTAINER Cristi Boariu <myemail> EXPOSE 9000 ADD files / WORKDIR /opt/docker RUN ["chown", "-R", "daemon", "."] USER daemon ENTRYPOINT ["bin/mytweetalerts"] CMD [] 

¿Alguna pista sobre cómo resolver este problema?

Esto es lo que hice para resolver este mismo problema, aunque no estoy seguro de qué parte lo resolvió específicamente.

My DockerFile se ve así:

 FROM dockerfile/java MAINTAINER yourNameHere EXPOSE 9000 9443 ADD files / WORKDIR /opt/docker RUN ["chown", "-R", "daemon", "."] # Make sure myApp is excutable RUN ["chmod", "+x", "bin/myApp"] USER daemon # If running a t1.micro or other memory limited instance # be sure to limit play memory. This assumes play 2.3.x ENTRYPOINT ["bin/myApp", "-mem", "512", "-J-server"] CMD [] 

Consulte https://www.playframework.com/documentation/2.3.x/ProductionConfiguration para get información sobre la configuration de la memory jvm.

My Dockerrun.aws.json (también obligatorio) se ve así:

 { "AWSEBDockerrunVersion": "1", "Ports": [ { "ContainerPort": "9000" } ] } 

Finalmente, mi aplicación de reproducción vive en los files/opt/docker con el script de ejecución en docker/bin . Todo esto está comprimido y enviado a EB.

Agregue un command chmod para hacer su file ejecutable:

 RUN ["chmod", "+x", "bin/myApp"] 

Entonces tu file Dockerfile será:

 FROM dockerfile/java MAINTAINER Cristi Boariu <myemail> EXPOSE 9000 ADD files / WORKDIR /opt/docker RUN ["chown", "-R", "daemon", "."] USER daemon RUN ["chmod", "+x", "bin/myApp"] ENTRYPOINT ["bin/mytweetalerts"] CMD []