Java项目基于Docker打包发布

一、后端项目

1.打包应用

mvn clean package -DskipTests

2、新建dockerfile文件

#基础镜像
FROM openjdk:8
#工作空间
WORKDIR  /opt
#复制文件
COPY wms-app-1.0-SNAPSHOT.jar app.jar(add也可以)
#配置容器暴漏的端口
EXPOSE 8080 //不暴露端口使用大P指定端口时访问不到
RUN ls#强制执行命令
#CMD ["java", "App"](也可以用cmd)
ENTRYPOINT [ "java","-jar","app.jar" ]

CMD 提供容器启动时的默认命令,易于被用户在运行时替换。
ENTRYPOINT 定义容器的核心应用或命令,通常不希望被轻易覆盖,运行时提供的参数将追加到其后。

3.打包镜像(.代表当前目录,输入命令时要进入文件所在目录)

docker build -t mall:v1 .

  4.测试运行

--rm 代表退出之后,容器自动删除

docker run -it --rm beimao:v1

5.阿里云免费私仓

可以把项目发布到阿里云私仓

容器镜像服务 (aliyun.com)

进入网站,点击选择创建个人实例,然后点击创建镜像仓库,填写仓库信息,点击下一步

选择本地仓库,点击创建镜像仓库

根据操作指南进行推送和拉取

例:推送

 二、前端项目

1 、编译打包

npm run build

将打包好的文件放到在opt目录下的新建wms_web/html目录中

2、前端项目 nginx的配置文件default.conf 和 dockerfile

(1)新建default.conf文件

可以使用以下命令进入nginx容器中查看文件,复制原本的进行修改

 例:

upstream wms-app{server 192.168.11.99:3999;
}
server {listen 80;server_name  localhost;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html;#解决单页面找不到路径问题 404}location /api/ {proxy_pass http://wms-app;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}

 (2)新建dockerfile

FROM nginx
COPY html /usr/share/nginx/html
RUN rm -rf /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/default.conf

1.root:设置静态根目录为 /usr/share/nginx/html

2. index:设置目录的默认文件为 index.html 、index.htm、index.php

3. try_files:设置文件查找规则为 $uri $uri/ /index.html。即3个规则,先从 $uri 查找,再从 u r i / 目录中查找,最后查找 / i n d e x . h t m l 。

3 、构建镜像

docker build -t web:v1 .

4、运行

如果运行时报错,更改了配置文件需要重新build构建镜像,否则使用原来的会继续报错

docker  run -it -p 8086:80  web:v1

结果:可在本地浏览器中访问

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试|Python random模块,超乎想象的强大

Python的random模块是一个非常强大的工具,用于生成随机数和随机选择。它提供了许多函数和方法,可以满足各种随机化需求。本文将介绍random模块的基本功能和常见用法,以帮助读者更好地理解和利用这个模块。 返回整数 random.randange() 语法…

关于 FastAPI 路径参数,你知道多少?

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

React Developer Tools安装

问题描述 在react开发中,需要插件来帮助我们开发,例如: 方法 (可能需要魔法 进去后搜索: 点击下载即可

【Nebula笔记】基础操作

目录 一、预备~ 二、基础操作 (一) 图空间 1. 创建图空间 2. 清空图空间 3. 其他 4. FAQ 执行DROP SPACE语句删除图空间后,为什么磁盘的大小没变化? (二) 点类型 1. 创建Tag 2. 删除Tag 3. 更新Tag 4. 其他 (三) 边类型 1. 创建Edge type…

git如何在某个commitId的状态提交到一个分支

有些时候,我们在使用子仓库,或者其他情况,会有一个状态是当前的git仓库是在一个commitId上,而没有在一个分支上: 这时如果想要把基于这个commitId创建一个分支,可以使用下面这个命令: git push…

HCIA实验

实验目的: 1、R6为ISP,接口IP地址均为公有地址,该设备只能配置IP地址,之后不能再对其进行任何配置; 2、R1-R5为局域网,私有IP地址192.168.1.0/24,请合理分配; 3、R1、R2、R4&#x…

JUC-多线程

目录 进程 线程 线程的串行 区别 多线程 进程 是指计算机中已执行的程序,曾经是分时系统的基本运作单位在面向进程设计的系统(如早期的UNIX,Linux 2.4及更早的版本)中,是程序的基本执行实体在面向线程设计的系统…

【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程

培训、环境、资料、考证 公众号:Geek极安云科 网络安全群:775454947 网络系统管理群:223627079 网络建设与运维群:870959784 极安云科专注于技能提升,赋能 2024年广东省高校的技能提升,在培训中我们的应急…

OSCP靶场--Crane

OSCP靶场–Crane 考点(CVE-2022-23940sudo service提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.229.146 -sC -sV --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-25 08:07 EDT Nmap scan report for 192.16…

Java 算法和数据结构 答案整理,最新面试题

Java中如何使用动态规划求解背包问题? 1、定义子问题: 首先确定动态规划状态,通常以物品数量和背包容量为变量定义子问题,例如dp[i][j]表示前i件物品放入容量为j的背包所能获得的最大价值。 2、确定状态转移方程: 基…

手撕算法-盛最多水的容器

描述 分析 两个板之间能盛下的水的量,取决于短板。想让两个板之间能盛下更多的水,需要改变短板的长度。就像水桶效应:那么用两个指针指向容器的两个板,然后每次移动较短的板即可。移动较短的板,可能会增大容积&#x…

计算机网络常见题(持续更新中~)

1 描述一下HTTP和HTTPS的区别 2 Cookie和Session有什么区别 3 如果没有Cookie,Session还能进行身份验证吗? 4 BOI,NIO,AIO分别是什么 5 Netty的线程模型是怎么样的 6 Netty是什么?和Tomcat有什么区别,特点是什么? 7 TCP的三次…

解决 cv2.imread读取带中文路径图片问题

http://t.csdnimg.cn/i8CXn 1.问题: # 中草药数据集样本可视化展示 import cv2 import matplotlib.pyplot as plt %matplotlib inline plt.title("heshouwu") plt.imshow(cv2.imread(r"D:\home\aistudio\data1\archive\train\何首乌\heshouwu_0001.…

[C语言]结构体、位段、枚举常量、联合体

目录 结构体 结构体的使用方法 结构体所占用的大小 位段 位段的使用方法 位段所占用的大小 枚举常量 枚举常量的使用方法 枚举常量的优势 联合体 联合体的使用方法 结构体 结构体的使用方法 结构体是一些值的集合,我们可以定义一个结构体,里…

数据结构入门框架

博主b站入口:Uncertanity的个人空间 参考资料: 《大话数据结构》程杰 《数据结构C语言(第二版)》严蔚敏

为什么静态成员函数不能是虚函数

在面向对象编程中,静态成员函数和虚函数都是常见的概念,但它们之间存在着本质上的差异。由于其特性上的差异,静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。 我在网上查到最多的说法是静态函数没有this指…

【OpenModelica】1 OpenModelica项目架构

1 OpenModelica项目架构 文章目录 1 OpenModelica项目架构一、 架构总览图二、OpenModelica各部分作用 一、 架构总览图 OpenModelica 环境由几个相互连接的子系统组成,如图 1.1 所示。 其中包括: MDT Eclipse 插件图形模型编辑器/浏览器文本模型编辑器…

开始喜欢上了runnergo,JMeter out了?

RunnerGo是一款基于Go语言、国产自研的测试平台。它支持高并发、分布式性能测试。和JMeter不一样的是,它采用了B/S架构,更灵活、更方便。而且,除了API测试和性能测试,RunnerGo还加上了UI测试和项目管理等实用功能,让测…

代码随想录day30(2)回溯:组合(leetcode77)

题目要求:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 思路:首先定义两个变量,一个存放符合条件的单一结果,另一个存放符合条件结果的集合,for循环用来横向遍历,递归用来纵…

C语言例4-6:格式字符d的使用例子

代码如下&#xff1a; //格式字符d的使用例子 #include<stdio.h> int main(void) {int num1123;long num2123456;printf("num1%d,num1%5d,num1%-5d,num1%2d\n",num1,num1,num1,num1);//以四种不同格式&#xff0c;输出int型数据num1的值printf("num2%ld,…