Dockerfile样例

embedded/2024/10/22 4:48:12/

一、基础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: environmentnamespace: 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-webnamespace: crm
spec:replicas: 2selector:matchLabels:app: crm-webtemplate:metadata:labels:app: crm-webspec:containers:- name: crm-webimage: 192.168.2.51/crm/platform-crm-web:v4ports:- containerPort: 80envFrom:volumeMounts:- name: crm-webmountPath: /usr/share/nginx/html/environment.jssubPath: environment.js- name: tzmountPath: /etc/localtimelivenessProbe:tcpSocket:port: 80initialDelaySeconds: 40periodSeconds: 10readinessProbe:tcpSocket:port: 80initialDelaySeconds: 40periodSeconds: 10volumes:- name: crm-webconfigMap:name: environmentitems:- key: "environment.js"path: "environment.js"- name: tzhostPath:path: /etc/localtimednsPolicy: "None"dnsConfig:nameservers:- 10.96.0.10searches:- svc.cluster.local- cluster.local
---
apiVersion: v1
kind: Service
metadata:name: crm-webnamespace: crm
spec:type: NodePortselector:app: crm-webports:- protocol: TCPport: 80targetPort: 80nodePort: 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/


http://www.ppmy.cn/embedded/129468.html

相关文章

Android OpenGL触控反馈

在许多游戏和应用程序中,优秀的用户交互设计是至关重要的,它能够让用户感受到与现实世界中物体的互动,即便他们实际上只是在与屏幕上的像素进行交互。而在安卓上则主要以触控交互为主。本篇我们将探讨如何通过添加触控功能来增强一个场景的交…

Spring Boot、Spring MVC和Spring有什么区别

人要长大,就要学会不断接受事件的变化 —— 24.10.14 spring是一个IOC容器,用来管理Bean,使用依赖注入实现控制反转,可以很方便的整合各种框架,提供AOP机制弥补OOP的代码重复问题、更方便将不同类不同方法中的共同处理…

C语言之练习题

欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 !😊 目录 内容第一题:加一第二题:移动零第三题 :分发饼干第四题:买股票的最佳时机第五题&a…

leetcode hot100 之【LeetCode 2. 两数相加】 java实现

LeetCode 2. 两数相加 题目描述 给你两个非空的链表,表示两个非负整数。它们每位数字都是按逆序的方式存储的,也就是最左边的数字是最低位的数字。请你将这两个数相加,并以相同逆序的方式返回一个新的链表。你可以假设除了数字 0 之外&…

[单master节点k8s部署]39.安装mysql

通过下面的命令安装mysql。首先下载mysql的rpm包。mysql-community-release-el7-5.noarch.rpm 这个包的作用是将 MySQL 的官方 YUM 仓库添加到系统中,随后通过yum install来安装mysql。 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm …

连锁收银系统

商淘云连锁管理系统助力连锁企业实现“人货账”全方位数字化管理,它依托连锁品牌进销存管理实现门店订货、线下收银、线上商城、会员营销等一体化管理。 门店订货补货支持连锁直营、加盟 不同门店不同进货价、不同门店不同商品、不同门店在线或者账期支付、门店PC或…

Axios 的基本使用与 Fetch 的比较、在 Vue 项目中使用 Axios 的最佳实践

文章目录 1. 引言2. Axios 的基本使用2.1 安装 Axios2.2 发起 GET 请求2.3 发起 POST 请求2.4 请求拦截器2.5 设置全局配置 3. Axios 与 Fetch 的比较3.1 Axios 与 Fetch 的异同点3.2 Fetch 的基本使用3.3 使用 Fetch 处理 POST 请求 4. 讨论在 Vue 项目中使用 Axios 的最佳实践…

docker 和 containerd 关系

containerd 是一个开源的容器运行时,它是用来管理容器生命周期的守护进程。containerd 支持 Docker 和其他容器格式,并且是许多现代容器编排系统(如 Kubernetes)的基础组件之一。 containerd 提供了一个命令行工具 ctr&#xff0…