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

Docker学习(4):部署web项目

一、部署vue项目

        在home目录下创建项目目录

         将打包好的vue项目放入该目录下,dist是打包好的vue项目

        在项目目录下,编辑default.conf

        内容如下:

server {listen       80;server_name  localhost; # 修改为docker服务宿主机的iplocation / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html =404;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

        该配置文件定义了首页的指向为 /usr/share/nginx/html/index.html, 所以我们可以一会把构建出来的index.html文件和相关的静态资源放到/usr/share/nginx/html目录下。

        在项目文件夹下编写Dockerfile文件

        内容如下: 

FROM nginxMAINTAINER zouzouRUN rm /etc/nginx/conf.d/default.confADD default.conf /etc/nginx/conf.d/COPY dist/ /usr/share/nginx/html/
  • FROM nginx:该镜像是基于nginx:latest镜像构建的
  • MAINTAINER zouzou:添加说明
  • RUN rm /etc/nginx/conf.d/default.conf:删除目录下的default.conf文件
  • ADD default.conf /etc/nginx/conf.d/:将default.conf复制到/etc/nginx/conf.d/下,用本地的default.conf配置来替换nginx镜像里的默认配置
  • COPY dist/ /usr/share/nginx/html/:将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/share/nginx/html/目录下

        三个文件保持在同一目录

        构建docker镜像, -t 表示镜像的名字

docker build -t offices-vue . # 最后的点不要丢了

        查看创建的镜像

         启动容器

docker run -d -p 5173:80 --name vue-test offices-vue
  • docker run:基于镜像启动一个容器

  • -d:后台方式启动

  • -p 5173:80: 端口映射,将宿主机的5173端口映射到容器的80端口

  • --name:容器名,我的叫vue-test

  • offices-vue:要启动的镜像名称

        在浏览器输入宿主的IP地址:5173,即可访问部署的vue项目。

二、部署springboot项目

        在home下创建项目目录:

        将打包的项目放入该目录中

        在该目录下创建编写Dockerfile文件

# Docker image for springboot file run
# 基础镜像使用java
FROM openjdk:22
# 作者
MAINTAINER ywz
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名为xx.jar
ADD myOffices-demo.jar test.jar 
# 运行jar包
RUN bash -c 'touch /test.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]

        要将这两个文件放在同一个目录 

        根据该目录创建镜像,因为需要下载jdk22所以需要一些时间。

docker build . -t test-demo

         查看创建好的镜像

        启动容器8087

# -d参数是让容器后台运行
# 8087为部署后实际代理端口,8089为程序的端口
docker run -d -p 8087:8087 --name test-demo test-demo

        在浏览器访问springboot项目

        查询动态日志

docker logs -f --tail=100 test-demo

相关文章:

Docker学习(4):部署web项目

一、部署vue项目 在home目录下创建项目目录 将打包好的vue项目放入该目录下,dist是打包好的vue项目 在项目目录下,编辑default.conf 内容如下: server {listen 80;server_name localhost; # 修改为docker服务宿主机的iplocation / {r…...

驱动开发中引入私有数据的原因

系列文章目录 驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 系列文章目录驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 驱动开发中引入私有数据(Private Data)概念主要是为了解决以下几个关键问题: 1.多设备支…...

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以下界面 2、往下滑找到 全部取消即可...

mysql事务 事务并发问题 隔离级别 以及原理

mysql事务 简介:事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务四大特性 原子性(Atomici…...

Android 性能为王时代SparseArray和HashMap一争高下

文章目录 一、SparseArray 源码分析1. **类定义和构造函数**2. **基本方法**2.1 put(int key, E value)2.2 get(int key)2.3 delete(int key)2.4 removeAt(int index)2.5 gc()2.6 size()2.7 keyAt(int index) 和 valueAt(int index) 3. **辅助方法**3.1 binarySearch() 二、使用…...

学术图表的基本配色方法

不论是商业图表还是专业图表,图表的配色都极其关键。图表配色主要有彩色和黑白两种配色方案。刘万祥老师曾提出: “在我看来,普通图表与专业图表的差别,很大程度就体现在颜色运用上。” 对于科学图表,大部分国内的期…...

【学习笔记】Webpack5(Ⅱ)

Webpack 3、高级篇 3.1、提升开发体验 —— SourceMap 3.2、提升打包速度 3.2.1 HotModuleReplacement 3.2.2 OneOf 3.2.3 Include / Exclude 3.2.4 Cache 3.2.5 Thread 3.3、减少代码体积 …...

oracle碎片整理

1、move碎片整理 1) DECLARE tmp_val VARCHAR2 (500); BEGIN FOR REC IN (SELECT TABLE_NAME FROM USER_TABLES ) LOOP tmp_val:=ALTER TABLE || REC.TABLE_NAME || MOVE; BEGIN EXECUTE IMMEDIATE tmp_val; DBMS_OUTPUT.ENABLE(buffer_size => null); DBMS_OUTPUT.put_l…...

民国漫画杂志《时代漫画》第15期.PDF

时代漫画15.PDF: https://url03.ctfile.com/f/1779803-1247458444-8befd8?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!...

Alamofire常见GET/POST等请求方式的使用,响应直接为json

Alamofire 官方仓库地址:https://github.com/Alamofire/Alamofire xcode中安装和使用:swift网络库Alamofire的安装及简单使用,苹果开发必备-CSDN博客 Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作&…...

三分钟一条AI小和尚视频 ,日引300+创业粉。单日变现四位数 全套工具

经过六个月的不懈努力和无数次的尝试错误,我终于找到了一个高效引流和积累粉丝的新策略,并愿意与大家无私分享。这一次,我将详尽地介绍这个方法,建议朋友们多次观看以彻底掌握其精髓。 简而言之,该策略主要依托于AI绘…...

vue3中表格中通过判断某个字段来设置对应按钮和消息提示的disabled展示

vue3中表格中通过判断某个字段来设置对应按钮和消息提示的disabled展示 一、前言1.代码案例2.效果展示 一、前言 当使用 Vue 3 和 Element UI 的 el-table 组件时,你可以通过判断字段的值来设置对应的 el-button 的 disabled 属性和消息提示。下面是一个简单的示例…...

产品经理-交互说明撰写(八)

1. 交互说明 交互说明可以看做是交互设计师或者产品经理输出的最核心的”产品“交互说明面向的”用户“是下游的同事 ⇒ UI设计师、开发工程师、测试工程师 2. 基本交互形式 2.1 页面交互 2.2 元素控件交互 3. 交互说明主要包括以下3个维度 3.1 页面流程(页面之…...

Rust:struct 与字节序列的相互转换

在 Rust 中&#xff0c;将结构体&#xff08;struct&#xff09;与字节序列&#xff08;Vec<u8>&#xff09;相互转换的常见方法是使用序列化和反序列化库。Rust 有一个流行的序列化库叫做 serde&#xff0c;它支持多种数据格式。为了将结构体转换为字节序列&#xff0c;…...

在https的系统中挂载其他http系统的画面的解决方案

目录 1.问题及说明 2.解决方案及示例 3.总结 1.问题及说明 A系统使用了https&#xff0c;在A系统中挂载B系统的http的画面&#xff0c;会报错如下&#xff1a; Mixed Content: The page at https://beef.zz.com/front/#/biz/cultivationList/cultivationDetails/5dbf836751…...

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…...

Lua中table.sort()使用方式

table.sort(tab,compare) 参数如下&#xff1a; tab:表名 compare:比较规则函数名 简略写法&#xff1a; a {1,2,3} table.sort(a,function(a,b) return a>b end) compare这个参数是一个函数&#xff0c;它有两个参数&#xff0c;你可以理解为表中的两个不同元素&…...

数组与指针声明小问题

1、int *p &a; 是 C 语言中的一条语句&#xff0c;它涉及指针的声明和初始化。让我们逐步解释这一行代码的含义&#xff1a; int *p&#xff1a;这是一个指针声明。它声明了一个名为 p 的变量&#xff0c;该变量是一个指向 int 类型数据的指针。 &a&#xff1a;这是取…...

【Java】手把手学会数组的使用

数组的基本用法 创建数组 基本语法&#xff1a; // 动态初始化 数据类型 [] 数组名称 new 数据类型 [] { 初始化数据 }; // 静态初始化 数据类型 [] 数组名称 { 初始化数据 }; 代码示例&#xff1a; int[] array1 {1,2,3,4,5};int[] array2 new int[]…...

音视频开发9 FFmpeg 解复用框架--如何将一个影音文件(mp4文件/wav文件) 最终播放起来

一&#xff0c;播放器框架 二 常用音视频术语 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a; 即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 媒体流&#xff08;Stream&#xff09;&#xff1a; 表示时间轴上的一段连续数据&#xff0…...

企业内网开发必备:VS2022离线安装NuGet包全流程(附Newtonsoft.Json示例)

企业内网开发实战&#xff1a;VS2022离线NuGet包部署指南与Newtonsoft.Json案例解析 在企业级开发环境中&#xff0c;网络隔离是常见的安全策略。最近接手的一个金融项目让我深刻体会到&#xff0c;当开发机被限制外网访问时&#xff0c;如何高效管理NuGet包依赖成了团队协作的…...

Charles证书过期别慌!Win10/Win11系统下彻底清除旧证书的保姆级教程

Charles证书过期别慌&#xff01;Win10/Win11系统下彻底清除旧证书的保姆级教程 当你发现Charles突然无法正常抓取HTTPS流量&#xff0c;大概率是根证书过期了。作为Windows平台下最常用的抓包工具之一&#xff0c;Charles的证书管理直接影响着开发调试效率。但系统证书存储机制…...

QFIL线刷救砖全攻略:遇到EDL模式切换失败怎么办?附详细COM端口排查方法

QFIL线刷救砖实战指南&#xff1a;EDL模式切换失败的系统级解决方案 当你面对安卓设备变砖的紧急状况&#xff0c;线刷往往是最后的救命稻草。但就在这关键时刻&#xff0c;"Download Fail:Switch To EDL Fail"的红色报错突然弹出&#xff0c;那种从希望到绝望的落差…...

SpringAI与DeepSeek集成:兼容OpenAI API的流式对话实践

1. 环境准备与基础配置 在开始集成SpringAI与DeepSeek之前&#xff0c;我们需要确保开发环境满足以下要求&#xff1a; JDK 17或更高版本&#xff1a;Spring Boot 3.x系列需要JDK 17作为最低版本支持Spring Boot 3.4.2&#xff1a;这是当前推荐的稳定版本Maven或Gradle&#xf…...

UE5蓝图实战:手把手教你用VArest插件实现HTTP请求(含JSON解析与参数设置)

UE5蓝图实战&#xff1a;用VArest插件构建高效HTTP通信系统 在虚幻引擎5的生态中&#xff0c;可视化编程已经成为非程序员开发者实现复杂功能的首选方案。当游戏需要与外部服务进行数据交互时&#xff0c;传统C网络编程的高门槛往往让美术师和策划人员望而却步。VArest插件作为…...

什么是KCP?QUIC?Websocket?

KCPKCP是一个基于UDP的可靠传输协议&#xff0c;其核心目标是在牺牲一定带宽利用率的前提下&#xff0c;尽可能降低传输延迟。它并非一个全新的传输层协议&#xff0c;而更像是在应用层对UDP数据包进行可靠性、顺序和流量控制的“增强外壳”。其底层具体来说就是在UDP的基础之上…...

Vue多文件学习项目综合案例——面经基础版,黑马vue教程

文章目录一、项目截图二、主要知识点三、main.js四、App.vue五、viewsArticle.vueArticleDetail.vueCollect.vueLayout.vueLike.vueUser.vuerouterindex.js一、项目截图 二、主要知识点 路由跳转路由传参缓存组件&#xff1a;keep-alive 三、main.js import Vue from vue im…...

OpenClaw个性化设置:定制Kimi-VL-A3B-Thinking的交互风格与输出格式

OpenClaw个性化设置&#xff1a;定制Kimi-VL-A3B-Thinking的交互风格与输出格式 1. 为什么需要个性化设置&#xff1f; 第一次用OpenClaw对接Kimi-VL-A3B-Thinking模型时&#xff0c;我发现默认的交互方式总有些"不对味"。模型回复要么过于冗长&#xff0c;要么格式…...

赛马娘DMM版汉化优化终极指南:三分钟打造完美中文体验

赛马娘DMM版汉化优化终极指南&#xff1a;三分钟打造完美中文体验 【免费下载链接】umamusume-localify Localify "ウマ娘: Pretty Derby" DMM client 项目地址: https://gitcode.com/gh_mirrors/um/umamusume-localify 还在为赛马娘DMM版的日文界面而头疼吗&…...

7Semi_SCD4x轻量驱动:嵌入式CO₂传感器I²C通信与CRC校验实践

1. 7Semi_SCD4x 驱动库深度解析&#xff1a;面向嵌入式系统的轻量级 SCD40/SCD41 CO₂ 传感器驱动设计与工程实践1.1 项目定位与工程价值7Semi_SCD4x 是一个专为 Sensirion SCD40/SCD41 系列高精度 CO₂、温度与湿度三合一传感器设计的极简底层驱动库。其核心价值不在于功能堆砌…...