我是码头工人的新手。我正在尝试使用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 entertainment-service。
泊坞窗图片,获得图片ID
docker run命令:docker run -d imageId
使用邮递员点击localhost:8080 /娱乐 - 无法得到回复,连接错误
docker exec -it container-id / bin / bash
来自守护程序的错误响应:Container未运行
任何想法Dockerfile都有问题吗?
第一次更新:
更新到泊坞窗文件
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时,它可以工作。不知道这里有什么问题。
第二次更新:
运行时出现hibernate错误
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]
答案 0 :(得分:0)
删除/添加命令之后,像这样
ADD target/entertainment-0.0.1-SNAPSHOT.jar app.jar
路径被视为相对于docker文件,因此/可能会导致问题。 docker run命令还需要更改以映射主机和容器之间的端口。
如果使用虚拟框,还要确保创建了端口转发规则。
对于第二个问题,请检查此question
如果您尝试使用此repo来学习泊坞广告。
答案 1 :(得分:0)
看起来该应用无法从docker容器联系到db。如果您使用的是像mysql这样的外部数据库,则需要在容器和外部mysql之间建立链接。
一种方法是将mysql容器和app容器放在同一个网络中。
docker network create sample-network
docker create --network sample-network
--name mysql-container -e MYSQL_ROOT_PASSWORD=root mysql --max-connections=300 --max-connect-errors=10000
docker create --network sample-network --name your_app_name app_image_name_here
docker start mysql-container your_app_name