无法访问jarfile -docker在弹性豆刺激上



我正在尝试将Spring Boot应用程序的Docker映像部署到AWS Elastic Beanstalk中,并且我在/ervar/log/eb-activity.log.log:

Docker容器在发布后出乎意料地退出:Docker容器在6月22日星期三11:56:25 UTC 2016:

错误:无法访问jarfile/home/packedit/app/packed-it.jar。检查快照日志以获取详细信息。(executor :: nonZeroExitStatus)

这是一个带有以下dockerrun.aws.json:

的弹性beanstalk上的一个容器
{
  "AWSEBDockerrunVersion": "1",
  "Image": {
    "Name": "packedit/packedit-api",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "8080"
    }
  ],
  "Volumes": [
    {
      "HostDirectory": "/var/app/packedit",
      "ContainerDirectory": "/home/packedit/app"
    }
  ],
  "Logging": "/home/packedit/app/logs"
}

这是dockerfile:

FROM java:8
MAINTAINER my@email.com
VOLUME /tmp
EXPOSE 8080
ENV USER_NAME packedit
ENV APP_HOME /home/$USER_NAME/app
ENV APP_FILENAME packed-it.jar
RUN useradd -ms /bin/bash $USER_NAME
RUN mkdir -p $APP_HOME/data
ADD $APP_FILENAME $APP_HOME/$APP_FILENAME
RUN chown -R $USER_NAME $APP_HOME/
USER $USER_NAME
WORKDIR $APP_HOME
RUN bash -c 'touch $APP_FILENAME'
# Can't use $APP_FILENAME here because ENTRYPOINT does not do ENV replacement
# See: http://stackoverflow.com/a/28854410/336752
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","packed-it.jar"]

我已经成功地将Docker映像部署到了ECS的EC2实例中,但我没有成功使用Elastic Beanstalk。我的猜测是我在卷上做错了什么,但我正在努力理解该文档。我最初是从多核心配置开始的,但已简化以尝试隔离我的问题。

感谢您的任何建议。

您需要删除该行

" ContainerDirectory":"/home/packedit/app"

来自您的Dockerrun.aws.json。

看来,混乱是码头工具的工作方式。这些卷在运行时分配,并在同一台计算机上连续运行。

这是正在发生的事情。Docker映像是使用Jar In/Home/Packedit/App构建的,但是由于您在同一位置定义了一个卷,因此在该位置运行并安装在该位置时会创建一个空音量。因此,忽略了图像的相同目录。

这是您可以在本地复制该问题的方法:

docker build .
docker run -v /home/packedit/app IMAGEID_FROM_OUTPUT_OF_PREVIOUS_COMMAND

最新更新