为什么我收到在Docker部署中被拒绝的权限?

我已经在Elastic Beanstalk中创build了一个应用程序,使用这个项目的指令来托pipe一个play framework 2应用程序。

我已经打包完全像Docker需要的项目,但是当我上传到应用程序的最后一个压缩,我收到一个权限被拒绝在这个stream程中的错误:

  • 环境更新正在开始。
  • 将新版本部署到实例。
  • 成功拖拽dockerfile / java:latest
  • 成功构buildaws_beanstalk / staging-app
  • Docker容器在启动后意外退出:Docker容器意外退出9月12日23:32:44 UTC 2014:2014/09/12 23:32:39 exec:“bin / my-sample-project”:权限被拒绝。 检查快照日志的详细信息。

我已经花了几个小时,没有任何成功。

这是我的根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 [] 

任何提示如何解决这个问题?

以下是我所做的解决同样的问题,但我不确定哪一部分专门解决了这个问题。

我的DockerFile看起来像:

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

有关设置jvm内存的信息,请参阅https://www.playframework.com/documentation/2.3.x/ProductionConfiguration

我的Dockerrun.aws.json(也是必需的)看起来像:

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

最后,我的应用程序files/opt/dockerdocker/bin的运行脚本files/opt/docker中。 所有这些都被压缩并发送给EB。

添加一个chmod命令,使您的文件可执行文件:

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

所以你的Dockerfile将是:

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