当前位置: 首页 > news >正文

衡水移动端网站建设番禺网站建设公司哪家好

衡水移动端网站建设,番禺网站建设公司哪家好,东莞外贸公司,网站建设 域名主机比起容器、镜像来说,Dockerfile 非常普通,它就是一个纯文本,里面记录了一系列的构建指令,比如选择基础镜像、拷贝文件、运行脚本等等,每个指令都会生成一个 Layer,而 Docker 顺序执行这个文件里的所有步骤&…

比起容器、镜像来说,Dockerfile 非常普通,它就是一个纯文本,里面记录了一系列的构建指令,比如选择基础镜像、拷贝文件、运行脚本等等,每个指令都会生成一个 Layer,而 Docker 顺序执行这个文件里的所有步骤,最后就会创建出一个新的镜像出来。

2、编写java项目对应的Dockerfile

# 使用 OpenJDK 8 作为基础镜像
FROM openjdk:8-jdk-alpine# 作者信息
LABEL maintainer="flgb"# 设置环境变量
ENV SPRING\_OUTPUT\_ANSI\_ENABLED=ALWAYS \JAVA\_OPTS="-Xms2048m -Xmx2048m -Dspring.profiles.active=prod -Dserver.port=6088"\PORT=6088
# spring-boot-admin.jar相对于Dockerfile的路径
COPY /spring-boot-admin.jar /spring-admin.jar# sh shell -c 执行后面命令
ENTRYPOINT ["sh", "-c", "java $JAVA\_OPTS -jar /spring-admin.jar"]#通过 EXPOSE 命令暴露外部访问容器端口
EXPOSE $PORT

注意点

ADD 和COPY 的区别

COPY 和 ADD 都是用于将文件从主机复制到 Docker 容器内部的命令,但它们之间有一些区别:

  1. COPY 命令只能复制本地主机上的文件或目录到容器内部,不能从 URL 或者其他网络资源复制文件。而 ADD 命令可以从本地主机、URL
    或者其他网络资源复制文件。
  2. ADD 命令支持自动解压缩 tar 类型的文件(如压缩文件
    .tar、.tar.gz、.tar.bz2、.tar.xz),并将解压后的内容复制到容器内。而 COPY
    命令则只是简单地复制文件,不会自动解压缩。
  3. 由于 ADD 命令的功能更多,因此在复制文件时,建议优先使用 COPY 命令,除非需要 ADD 的特殊功能。
CMD 和 ENTRYPOINT的区别

CMD 指令

  • CMD 用于指定容器启动时要执行的命令。
  • 可以有多个 CMD 指令,但只有最后一个生效。
  • 如果 Dockerfile 中没有 CMD 指令,则默认会执行容器启动时所用的镜像的 CMD 命令。
  • CMD 指令可以被 Docker run 命令中的参数覆盖。

ENTRYPOINT 指令

  • ENTRYPOINT 用于指定容器启动时要执行的可执行文件或脚本。
    只需要运行该镜像,就会自动执行 ENTRYPOINT 指定的命令
  • 如果 Dockerfile 中存在多个 ENTRYPOINT 指令,则只有最后一个生效。
  • 在运行容器时,可以通过在 docker run 命令中指定参数来覆盖 ENTRYPOINT 中的内容。
  • 如果 Dockerfile 中同时存在 ENTRYPOINT 和 CMD 指令,则 CMD 的内容会被作为参数传递给 ENTRYPOINT
    所指定的可执行文件或脚本。

3、构建java项目镜像

docker build [OPTIONS] PATH | URL | -

其中,PATH 可以是本地文件系统上 Dockerfile 文件所在的路径,也可以是 URL,或者是 -(表示使用标准输入)。OPTIONS 是一些可选参数,常用的参数包括:

  • -t, --tag:为镜像设置一个标签,格式为 :。例如,-t myimage:1.0。
  • -f, --file:指定要使用的 Dockerfile 文件的路径。如果不指定,默认为当前目录下的 Dockerfile 文件。
  • 其他选项包括 --build-arg、–pull、–no-cache 等,可以根据需要进行设置。

例如,如果 Dockerfile 文件位于当前目录下,可以使用以下命令构建镜像并设置标签:

docker build -t spring-boot:1.0 .

上传dockerfile和spring-boot-admin jar到对应路径/data/java/spring-boot下

在这里插入图片描述

构建镜像
docker build -t spring-boot:1.0 
Build的路径问题
经常会遇到如下报错:
COPY failed: stat xxxx: no such file or directory

1、Dockerfile 文件查找不到
如果dockerfile不在当前目录,则需要指定dockerfile 目录构建

docker build -f "/data/java/spring-boot/Dockerfile" -t spring-boot:1.0 

2、Copy /spring-boot-admin.jar文件找不到的问题

COPY 命令中指定的源路径应该是相对于 Dockerfile 的路径

  • 如果 spring-boot-admin.jar 文件位于与 Dockerfile 同级的目录下,应该将 COPY 命令修改为:
COPY spring-boot-admin.jar /spring-admin.jar
  • 如果 spring-boot-admin.jar 文件位于 Dockerfile 的上级目录中,可以使用 … 来指定父级目录
COPY ../spring-boot-admin.jar /spring-admin.jar
  • PS:一开始把COPY 的路径设置成了/data/java/spring-boot/spring-boot-admin.jar一直找不到,报错:
failed to walk /var/lib/docker/tmp/buildkit-mount2576932656/data/java/spring-boot: lstat /var/lib/docker/tmp/buildkit-mount2576932656/data/java/spring-boot: no such file or directory
查看已经构建成功的镜像
docker images

4、生成容器

  • 执行命令
docker run -p 6088:6088 --name springboot --restart always \
> -d spring-boot:1.0

查看项目启动日志,启动成功

docker log 容器id
#动态更细查看日志
docker log -f 容器id

在这里插入图片描述

5、docker 应用日志映射到本地

进入容器里面查看日志

#查看对应容器id
docker ps 
#进入容器
docker exec -it container_id bash
#如果没装对应的bash命令,使用sh进入
docker exec -it container_id sh
#查看目录
ls
#退出容器
exit

#进入logback配置的输出log地址,查看日志文件在这里插入图片描述

#停止容器
docker stop id
#删除容器
docker rm id
#重新生成挂在日志到本地目录的容器
docker run -p 6088:6088 --name spring-boot --restart always \
-v /home/spring-boot/logs:/home/spring-boot/logs \
-d spring-boot:1.0

同步查看本地目录
在这里插入图片描述

6、docker环境下 easyExcel导出错误

java.lang.NullPointerException: nullat sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)at sun.awt.FontConfiguration.init(FontConfiguration.java:107)at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)at sun.font.SunFontManager$2.run(SunFontManager.java:431)at java.security.AccessController.doPrivileged(Native Method)at sun.font.SunFontManager.<init>(SunFontManager.java:376)at sun.awt.FcFontManager.<init>(FcFontManager.java:35)at sun.awt.X11FontManager.<init>(X11FontManager.java:57)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at java.lang.Class.newInstance(Class.java:442)at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)at java.security.AccessController.doPrivileged(Native Method)at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)at java.awt.Font.getFont2D(Font.java:491)at java.awt.Font.canDisplayUpTo(Font.java:2060)at java.awt.font.TextLayout.singleFont(TextLayout.java:470)at java.awt.font.TextLayout.<init>(TextLayout.java:531)at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:273)at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:684)at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:705)
因为docker的基础镜像openjdk缺少字体。
http://www.yayakq.cn/news/412577/

相关文章:

  • 网站搭建后提示建设中wordpress文章所有图片大小
  • 个人什么取消网站备案学校手机网站建设
  • 安徽省建设工程造价信息网站下载软件的网站
  • 哪个网站做质量认证书范本html前端开发
  • 河北建筑网站wordpress 标签小工具栏
  • 莆田系医院的网站用什么做的国外怎么做网站
  • 成都网站优化维护共青城市建设局网站
  • 院校网站建设对比分析实训报总结濮阳做网站设计
  • WordPress超级链接不跳转网站seo优化推广教程
  • 建设购物网站需要多少费用太原西北建设有限公司网站
  • 微网站开发一般费用多少如何在凡科上做网站
  • 合肥新站区有做网站的吗百度我的订单
  • 用html做网站的心得体会一级做a爱免费网站
  • 建设小型网站系统开题报告免费海外云服务器
  • 石排东莞网站建设广州做网站要多少钱
  • 网站建设及推广文案零售网站制作
  • 网站查看空间商网站购物车设计
  • 免费flash网站源码带后台wordpress漏洞扫描器
  • 网站建设误区图网站推广的网站作用
  • 被k掉的网站怎么做才能有收录服装设计学校十大排名
  • 开网站做销售学建网站 必须学那些知识
  • 滨海新区建设网站微软网站开发工具
  • 如何做漫画网站权威发布信息
  • 做网站和软件有区别吗深圳设计周展会2024时间
  • 做淘宝详情页的网站织梦网站地图怎么做xml
  • 广西做网站公司排名百度网站排名优化软件
  • 功能主机网站河间网站建设
  • 动易论坛官方网站网站开辟两学一做专栏
  • php网站下载文件怎么做内蒙古赤峰市建设局网站
  • php网站页面转wordpress好用的建站系统