git - 将 Perl Docker 容器部署到 Elastic Beanstalk

标签 git perl amazon-web-services docker amazon-elastic-beanstalk

我正在构建一个 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 . 上它构建良好并显示“成功构建”。

我使用 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] 命令失败,错误代码为 1: 并且进一步 Docker 容器在启动后意外退出

谁能帮我解决这些文件的问题?

最佳答案

我想通了。问题是 hypnotoad 默认在后台运行,这会使容器立即死亡。通过添加 -f 标志,它在前台运行并且容器保持不变。我还将 CMD 切换为 ENTRYPOINT

#... same as above except for last line

WORKDIR project
ENTRYPOINT [ "hypnotoad", "-f", "./script/project" ]

您仍然必须无缘无故地同时为 EB 提供 Dockerfile 和 Dockerrun.aws.json,但即便如此,它仍然可以正常工作。

关于git - 将 Perl Docker 容器部署到 Elastic Beanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637123/

相关文章:

perl - Unix 如何读取带有两个连续斜杠的路径名? (例如/home/user//mystuff)

amazon-web-services - terraform 如何处理更新/删除资源?

amazon-web-services - 加密 S3 数据的 AWS Quicksight Athena 导入错误

git - 正确推送 git 子模块

windows - git - 双启动 ubuntu 和 windows,带有单独的数据分区

git - 从不正确的 rebase 或 merge 中恢复

amazon-web-services - 如何在AWS步骤函数中获取迭代器/映射状态的索引

git - 删除 git 子模块 - 如何在 pull 时自动删除?

linux - 为什么我的哈希值(来自 csv)的大小恰好是行数值的一半?

linux - Net::SSH::Perl 不工作但是是最新的