【发布时间】:2016-10-24 08:59:56
【问题描述】:
我正在尝试将 Spring Boot 应用程序的 Docker 映像部署到 AWS Elastic Beanstalk,我在 /var/log/eb-activity.log 中遇到此错误:
Docker 容器在启动后意外退出:Docker 容器在 2016 年 6 月 22 日星期三 11:56:25 UTC 意外退出:
错误:无法访问 jarfile /home/packedit/app/packed-it.jar。检查快照日志以获取详细信息。 (执行者::NonZeroExitStatus)
这是 Elastic Beanstalk 上的单个容器,带有以下 Dockerrun.aws.json:
{
"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"]
我已使用 ECS 成功将 Docker 映像部署到 EC2 实例,但使用 Elastic Beanstalk 没有成功。我的猜测是我在卷上做错了,但我很难理解documentation。我最初从多容器配置开始,但已简化以尝试隔离我的问题。
感谢您的建议。
【问题讨论】:
标签: amazon-web-services docker spring-boot amazon-elastic-beanstalk