如何在docker容器中使用docker文件运行jar文件

我编写了docker文件来运行jar文件而它没有创建日志文件,因为下面的控制台是我的docker文件

From ubuntu RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y software-properties-common && \ add-apt-repository ppa:webupd8team/java -y && \ apt-get update && \ echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \ apt-get install -y oracle-java8-installer && \ apt-get clean VOLUME /temp RUN apt-get install -y vim ADD real_estate_false.jar /real_estate_false.jar COPY real_estate_false_lib /real_estate_false_lib COPY resources /resources COPY testxml /testxml CMD ["java","-jar","/real_estate_false.jar",">","var/log/jar.log"] 

CMDexecforms不知道重定向是什么,这是一个shell特性。

使用stdout进行日志记录。

 CMD ["java","-jar","/real_estate_false.jar"] 

如果您确实需要容器中的日志文件,请在shell中运行该命令

 CMD ["sh", "-c", "java -jar /real_estate_false.jar > var/log/jar.log"] CMD java -jar /real_estate_false.jar > var/log/jar.log 

为什么要在容器创建日志文件? 配置日志记录驱动程序会更灵活。

以下示例是设计的,但演示了如何收集来自所有容器的日志记录事件。 我建议进一步阅读流利的选项

首先在容器中流畅地收集日志事件

 mkdir log docker run -d --name fluentd -p 24224:24224 -v $PWD:/fluentd/etc -v $PWD/log:/fluentd/log -e FLUENTD_CONF=log.conf fluent/fluentd 

现在运行一个容器,创建一个要记录的事件:

 docker run --log-driver=fluentd ubuntu echo hello world 

示例配置将日志事件发送到输出日志文件

 ├── log │  └── events.20160901.b53b670f22298bbcb └── log.conf 

log.conf

  @type forward port 24224   @type file path /fluentd/log/events append true  

额外

你嫁给了Oracle JDK吗? 以下Dockerfile会相当简单:

 FROM openjdk:8 ADD target/demo-1.0.jar /opt/demo/demo-1.0.jar CMD ["java","-jar","/opt/demo/demo-1.0.jar"] 

要在docker中运行myapp.jar(例如,为了避免在主机上安装java),您可以运行:

 docker run -v `pwd`:/mnt java:8 java -jar /mnt/myapp.jar