Dockerfile样例

一、基础jar镜像制作

## Dockerfile
FROM registry.openanolis.cn/openanolis/anolisos:8.9
RUN mkdir /work
ADD jdk17.tar.gz fonts.tar.gz /work/
RUN yum install fontconfig ttmkfdir -y && yum clean all && \
    chmod -R 755 /work/fonts
ADD fonts.conf /etc/fonts/fonts.conf
ADD Shanghai /etc/localtime
ENV JAVA_VERSION="17" \
    JAVA_HOME="/work/jdk17" \
    PATH="${PATH}:/work/jdk17/bin" \
    LANG=zh_CN.UTF-8
EXPOSE 8080

或者:

## Dockerfile
FROM registry.openanolis.cn/openanolis/anolisos:8.9
RUN mkdir /work
ADD jdk17.tar.gz /work/
RUN yum install fontconfig ttmkfdir -y && yum clean all
ADD Shanghai /etc/localtime
ENV JAVA_VERSION="17" \
    JAVA_HOME="/work/jdk17" \
    PATH="${PATH}:/work/jdk17/bin" \
    LANG=zh_CN.UTF-8
EXPOSE 8080


# 构建基础环境

# docker build -t 192.168.2.51/crm/base:v1 .

说明:
    此基础镜像修改了时区为上海,添加了字体、jdk17,使用8080作为应用默认端口

二、用上面的基础镜像制作jar包应用镜像

## # cat Dockerfile 
FROM 192.168.2.51/crm/base:v1
COPY platform-crm-api.jar /work/app.jar
CMD  ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/work/app.jar"]


## 构建
# docker build -t 192.168.2.51/crm/crm-api:v8 .

## 上传
# docker push 192.168.2.51/crm/crm-api:v8

说明:
    此应用的配置文件是通过调用系统变量获取到如数据及中间件的连接地址及账户的。所以这里不用使用-D传输变量。
    在后期通过k8s进行传输变量到镜像即可。

应用变量使用截图:

k8s传输变量截图:

docker 运行传入变量一:

# docker run --env-file env-file.txt 192.168.2.51/crm/crm-api:v8

# docker run --env-file env-file.txt 192.168.2.51/crm/crm-api:v8  env  # 查看传入变量

docker 运行传入变量二:

# docker run -d -e database_password=Dev_tmp_0507 -e database_url=192.168.2.154:3306/hs_crm_sys -e database_username=kyc_cle -e redis_host=192.168.2.193 -e redis_port=6379 192.168.2.51/crm/crm-api:v8

三、vue应用镜像制作

## 应用镜像
# cat Dockerfile 
FROM registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
ADD dist.tar /usr/share/nginx/html

## configmap

# cat configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: environment
  namespace: crm
data:
  environment.js: |
    window.webConfig={
      "VITE_DOMAIN_URL_VUE_BOOT":"http://192.168.2.34:31201"
    }


## yaml文件

# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: crm-web
  namespace: crm
spec:
  replicas: 2
  selector:
    matchLabels:
      app: crm-web
  template:
    metadata:
      labels:
        app: crm-web
    spec:
      containers:
      - name: crm-web
        image: 192.168.2.51/crm/platform-crm-web:v4
        ports:
        - containerPort: 80
        envFrom:
        volumeMounts:
        - name: crm-web
          mountPath: /usr/share/nginx/html/environment.js
          subPath: environment.js
        - name: tz
          mountPath: /etc/localtime
        livenessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 40
          periodSeconds: 10
        readinessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 40
          periodSeconds: 10
      volumes:
      - name: crm-web
        configMap:
          name: environment
          items:
          - key: "environment.js"
            path: "environment.js"
      - name: tz
        hostPath:
          path: /etc/localtime
      dnsPolicy: "None"
      dnsConfig:
        nameservers:
          - 10.96.0.10
        searches:
          - svc.cluster.local
          - cluster.local
---
apiVersion: v1
kind: Service
metadata:
  name: crm-web
  namespace: crm
spec:
  type: NodePort
  selector:
    app: crm-web
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 31641

configmap在deploymen中挂载截图

四、未测试的方法

# 基础镜像
FROM ubuntu:latest
 
# 设置工作目录
WORKDIR /app
 
# 创建目录
RUN mkdir -p /dir1 /dir2
 
# 复制多个文件到多个目录
RUN cp /app/file1.txt /dir1/ && \
    cp /app/file2.txt /dir2/ && \
    cp /app/file3.txt /dir1/ && \
    cp /app/file4.txt /dir2/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/897173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker配置mysql8报错 ERROR 2002 (HY000)

通过docker启动的mysql,发现navicat无法连接,后来进入容器内部也是无法连接,产生以下错误 root9f3b90339a14:/var/run/mysqld# mysql -u root -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket …

二叉树中的最长交错路径

题目链接 二叉树中的最长交错路径 题目描述 注意点 每棵树最多有 50000 个节点每个节点的值在 [1, 100] 之间起点无需是根节点 解答思路 要找到最长交错路径,首先想到的是深度优先遍历因为起点无需是根节点,所以对于任意一个节点,其可以…

4个在线音频剪辑工具,让你的声音更加动听。

最近我开始接触音乐剪辑,想把一些歌曲进行剪辑创作;于是在网上好多了很多的音频剪辑软件进行试用,一番下来,发现了4款使用起来体验感比较好的专业剪辑工具,在这里跟大家分享分享。这些工具都可以被应用于歌曲创作&…

Linux系统基础-进程间通信(3)_模拟实现匿名管道

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Linux系统基础-进程间通信(3)_模拟实现匿名和命名管道 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论&a…

【优先算法】--双指针1

“一念既出,万山无阻。”加油陌生人! 目录 1.双指针--移动零 2.双指针-复写零 ok,首先在学习之前,为了方便大家后面的学习,我们这里需要补充一个知识点,我这里所谓的指针,不是之前学习的带有…

dolphinscheduler创建工作流及工作流中DataX的使用(简单操作)

一、在项目管理中创建项目:点击创建项目 用哪个用户登录的,所属用户就是哪个,直接输入项目名即可 二、点击项目,在项目中创建工作流,用DataX同步数据 按照图片的步骤依次填写完成,注意 图片中的第九步是写…

2024年双十一腾讯阿里云香港服务器优惠活动汇总

2024年双11狂欢节终于来了,按照往年的惯例,各大云服务器厂商通常会在10月20号左右开始上线新的活动,今年双11期间国内各大云服务器厂商都有哪些活动呢?有哪些活动包括香港云服务器呢?是否有海外服务器的优惠折扣呢&…

HelpLook联合MarketUP发布《2024企业内容营销实战》白皮书!(内附下载链接)

B2B内容营销为什么值得反复讲? 这是一个技术创新、客户聚焦、回归内容的B2B时代,B2B市场源源不断地诞生新故事,从短视频到AIGC,从新产品到新技术,内容始终是所有B2B活动的核心,需要更新更深的内容营销塑造…

Xmind一款极简思维导图和头脑风暴软件,支持PC和移动端,Xmind 2024.10.01101版本如何升级到Pro版?简单操作,最新可用!

文章目录 Xmind下载安装Xmind免费升级到Pro Xmind 是一款全功能的思维导图和头脑风暴软件,不限制节点和文件数,创新无限,界面纯净简洁无广告,支持PC和移动端,思维导图和大纲视图自由切换,可本地化文档存储&…

新版idea菜单栏展开与合并

新版idea把菜单栏合并了看着很是不习惯,找了半天原来在这里展开 ① 点击文件 -> 设置 ② 点击外观与行为 -> 外观 -> 合并主菜单和窗口标题 然后确定,重启即可

【LeetCode每日一题】——523.连续的子数组和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 中等 三【题目编号】 523.连续的子数组和 四【题目描述】 给你一个…

【不要离开你的舒适圈】:猛兽才希望你落单,亲人总让你回家,4个维度全面构建舒适圈矩阵

单打独斗的英雄时代已经落幕 抱团取暖才是社会寒冬的良策 自然界中,每个物种都占据着自己的领地和生存空间。 生态位的差异决定了它们的生存方式,一旦离开领地,失去群体的庇护,就会沦为野兽的美餐。 人类社会同样存在隐形圈层…

Nginx16-Lua扩展案例

零、文章目录 Nginx16-Lua扩展案例 1、ngx_lua案例 (1)需求 请求地址:http://192.168.119.161/getByGender?name张三&gender1Nginx接收到请求后,根据gender传入的值 如果gender传入的是1,则在页面上展示张三先…

初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)

本章概述 前情回顾单链表实现单链表彩蛋时刻!!! 前情回顾 咱们在上一章博客点击:《顺序表》的末尾,提出了一个问题,讲出了顺序表的缺点——有点浪费空间。所以,为了解决这个问题,我…

Java项目-基于springboot框架的线上买菜系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

WebGL编程指南 - 高级变换与动画基础

学习使用一个矩阵变换库,该库封装了矩阵运算的数学细节。快速上手使用该矩阵库,对图形进行复合变换。在该矩阵库的帮助下,实现简单的动画效果。 矩阵变换库:cuon-matrix.js OpenGL中的函数: 书中 cuon-matrix.js 函数…

go jwt 用户登录和返回用户信息 token ----important!!!

1.每一行代码都有详细注释,解释了其功能和作用。这些注释可以帮助你理解代码如何工作,特别是在处理用户登录、生成 JWT、验证 JWT 和返回用户信息的过程中。 package main // 指定这个文件是一个可执行程序import ("fmt" …

SSRF-利用dict协议-攻击redis

1.靶场准备: CTFHub-技能树-Web-SSRF-Redis协议 蚁剑AntSword 2.简述: 2.1 SSRF 服务器端请求伪造,存在一个url参数,一般用于图片上传、网页重定向等,我们可以控制url参数,去访问内网服务器的敏感内容…

运用AI实践|如何从AI工具提升工作效率实践

文章目录 引言关于1024这个数值Python 语言获取算法代码Java语言获取算法代码其他语言获取算法代码1024 的用途和功能总结 📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🏆 近期荣誉&am…

FPGA学习(6)-基础语法参数化设计阻塞与非阻塞

目录 1.两种参数化不改变源文件,只改仿真文件的值 2.参数化设计实现模块的重用 2.1不用参数化方法 2.1.1源文件 2.1.2仿真文件 2.1.3仿真波形及实验 2.2 用参数方法 2.2.1调用之前写的led灯闪烁模块,在本源函数中,例化4次调用之前的模…