用上篇博客部署Java程序是ok的,不过Java日志打印在容器里, 不能满足原来ELK的日志搜集。

方法有2种:

1、在Docker容器内部加入日志收集工具,Filebeat或Logstash。

2、将打Docker内的日志打印到宿主机的目录。

本文用的第二种,下面再慢慢说思路,开始叻

先看项目不迷糊

1、首先 Dockerfile 里的 ENTRYPOINT配置Java日志输出无果

# 基础镜像使用Java
FROM java:8
LABEL name=shop-client-prod
LABEL version=v0.0.1
# 将jar包添加到容器中并更名为
# 注意:这个jar包文件名,请前方服务器 目录查看
COPY /shop-client/target/shop-client-1.0-SNAPSHOT.jar /usr/local/app/client.jar
# 容器暴露端口
EXPOSE 7071
# 这个暂且不用
# COPY target/lib /app/lib
ENTRYPOINT ["nohup","java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dspring.profiles.active=master","/usr/local/app/shop-client.jar", ">client.out" , "&"]

改为执行shell脚本的方式,把启动Jar的指令拆出来

用上篇博客部署Java程序是ok的,不过Java日志打印在容器里,不能满足原来ELK的日志搜集。方法有2种:1、在Docker容器内部加入日志收集工具,Filebeat或Logstash。2、将打Docker内的日志打印到宿主机的目录。本文用的第二种,下面再慢慢说思路,开始叻先看项目不迷糊1、首先 Dockerfile 里的ENTRYPOINT配置Java日志输出无果# 基础镜像使用JavaFROM java:8LABEL name=shop-client-prod.. 第三、写入指定容器在某时间段的日志 --将最近225分钟的日志写到file.txt文件 docker logs --since 225m 4261ce7f5c14 >>file.txt 第四、将file.tx
最近在工作时遇到一个问题,docker容器无法访问宿主机的redis,telent6379端口不通。 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可。 操作如下: firewall-cmd –permanent –zone=trusted –change-interface=docker0 firewall-cmd –reload 补充知识:docker 启动mysql 容器出错Ports are not available: listen tcp 0.0.0.0:3306 错误截图如下 该错误是由于本地3306端口被占用,很可能是本地已经
一、什么是DockerFile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,有了Dockerfile,就可以很轻松通过docker bulid构建出自己的一个镜像。 二、DockerFile基础知识 每个保留关键字(指令)都是必须大写字母 执行从上到下顺序执行 #表示注释 每个指令都会创建提交一个新的镜像层,并提交! FROM # 基础镜像,一切从这里开始构建 MAINTAINER # 镜像是谁...
VOLUME /tmp ADD target/myapp.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 这个Dockerfile指定了基础镜像为OpenJDK 8,将项目打包成的jar文件复制到镜像中,并设置应用程序的入口点。 2. 构建Docker镜像 在命令行中进入到项目的根目录下,执行以下命令构建Docker镜像: docker build -t myapp . 其中,myapp是你为镜像指定的名称。 3. 运行Docker容器 使用以下命令启动Docker容器: docker run -p 8080:8080 myapp 其中,-p参数指定了容器端口和主机端口的映射关系,myapp是镜像的名称。 完成以上步骤后,你就可以在浏览器中访问http://localhost:8080来访问你的Java应用程序了。