将Perl Docker容器部署到Elastic Beanstalk
我正在构build一个Docker容器,它从bitbucket中获取perl / mojolicious回购,但是我遇到了问题。 我有我的Dockerfile像这样:
# DOCKER-VERSION 0.3.4 FROM perl:latest MAINTAINER My Name myname@name.com # Update aptitude with new repo RUN apt-get update # Install software RUN apt-get install -y git # Make ssh dir RUN mkdir /root/.ssh/ # Copy over private key, and set permissions ADD repo-key /root/.ssh/id_rsa # Create known_hosts RUN touch /root/.ssh/known_hosts # Add bitbuckets key RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts RUN curl -L http://cpanmin.us | perl - App::cpanminus RUN cpanm Mojolicious RUN cachebuster=b953b35 git clone -b branch git@bitbucket.org:org/project.git EXPOSE 8080 WORKDIR project CMD hypnotoad script/project
而且,在本地,在docker build -t name/project .
它build立得很好,并说“成功build成”。
我用repo-key文件压缩了它,并将其提供给Elastic Beanstalk,我单击了Upload and Deploy(我成功部署了2048游戏示例,并试图复制它)。
这回来与Dockerrun.aws.json: No such file or directory
。 我认为这是奇怪的,因为文档说Dockerfile或Dockerrun.aws.json可以独立用于不同的需求。 但是,无论如何,我给了它一个简短的,有希望的无关紧要的Dockerrun.aws.json,就像这样:
{ "AWSEBDockerrunVersion": "1", "Ports": [ {"ContainerPort": "8080"} ], "Volumes": [] }
它仍然失败,现在日志状态[CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] command failed with error code 1:
进一步Docker container quit unexpectedly after launch
。
有人可以帮我解决这些文件?
我想到了。 问题是hypnotoad
在默认情况下在后台运行,这使得容器立即死亡。 通过添加-f
标志,它在前台运行,容器保持不变。 我也把CMD
ENTRYPOINT
。
#... same as above except for last line WORKDIR project ENTRYPOINT [ "hypnotoad", "-f", "./script/project" ]
您仍然必须喂EB既Dockerfile和Dockerrun.aws.json没有明显的原因,但即使如此,它的工作原理没有错误。
- 如何在Elastic Beanstalk多容器docker上使用fluentd日志驱动程序
- 在Elastic Beanstalk上部署Docker环境
- AWS – Beanstalk
- 一旦docker达到其最大内存限制,AWS EB应该创build新的实例
- 在Elastic Beanstalk上强制HTTPS单容器泊坞窗应用程序
- 如何自定义Elastic Beanstalk上的docker run命令?
- AWS Elastic Beanstalk中的多容器Dockerconfiguration版本错误
- 如何设置运行Django的AWS Elastic Beanstalk Docker平台?
- 如何从Elastic Beanstalk实例访问S3存储桶中的dockerconfiguration文件