【发布时间】:2018-08-16 08:44:09
【问题描述】:
我是 docker 新手。我正在尝试使用 docker 运行我的应用程序。但是,当我尝试在容器上运行 exec -it /bin/bash 命令时,它会引发错误 错误:
Error response from daemon: Container is not running
Following is my docker file (Dockerfile):
FROM openjdk:8-jdk-alpine
EXPOSE 8080
VOLUME /tmp
ADD /target/entertainment-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
接下来的步骤:
docker build -t 娱乐服务。
docker 镜像,获取镜像 id
docker 运行命令:docker run -d imageId
使用邮递员点击 localhost:8080/entertainment - 无法获得响应,连接错误
docker exec -it container-id /bin/bash
来自守护进程的错误响应:容器未运行
知道 Dockerfile 有什么问题吗?
第一次更新:
更新 docker 文件
FROM java:alphine
EXPOSE 8198 - same port used in qa32 properties file
VOLUME /tmp
WORKDIR /srv
ADD /target/entertainment-0.0.1-SNAPSHOT.jar /srv/
CMD java -jar entertainment-0.0.1-SNAPSHOT.jar
我遇到了同样的问题。当我尝试使用手动 java 命令从目标运行 jar 时,它可以工作。不知道这里有什么问题。
第二次更新:
运行时出现休眠错误
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:254) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
... 41 common frames omitted
我得到了堆栈
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_151]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_151]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_151]
【问题讨论】:
-
我的 docker 容器在启动后几秒钟内就死掉了。我可以在任何地方看到日志吗?
-
不带 -d 运行即可查看输出。
-
谢谢。我收到错误“原因:org.hibernate.HibernateException:当'hibernate.dialect'未设置时,对DialectResolutionInfo的访问不能为空”。不知道为什么我在使用 Docker 运行时会得到这个。我确实在 application.properties 文件中提到了 mysql 连接器和依赖项。我还尝试使用 --env 运行指向文件的 docker
-
现在问题已缩小到 Hibernate 而不是 docker。检查您在 pom 中的配置和依赖关系,了解问题的根本原因。
标签: mysql hibernate docker spring-boot dockerfile