如何将资源前端通过 Docker 部署到远程服务器

作为一个程序员,在开发过程中,经常会遇到项目部署的问题,在现在本就不稳定的大环境下,前端开发也需要掌握部署技能,来提高自己的生存力,今天就详细说一下如何把一个前端资源放到远程服务器上面通过docker部署,并且可以在浏览器中访问前端页面;

前提:你有一个远程服务器,并且可以通过 SSH 工具访问
步骤一:安装 Docker————进入远程服务器上面操作

1. 使用 SSH 连接到你的远程服务器。使用以下命令:

命令格式为: ssh 客户端用户名@服务器ip地址 

ssh your_username@your_server_ip

eg: 

2. 更新现有的软件包索引

sudo apt-get update

3. 安装必要的包,这些包允允许 apt (Linux系统的命令行工具,类似cmd)使用 HTTPS访问软件包

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

4. 添加 Docker 官方的 GPG 密钥,这确保你从可信来源安装 Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

5. 设置稳定的 Docker 存储库,通过添加 Docker 的 APT 软件源,可以从 Docker 官方仓库安装 Docker;

echo \"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

6. 安装 Docker Engine ,更新软件包索引并安装最新版本的 Docker Engine 和容器运行时:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

7. 验证 Docker 安装是否成功,运行一个测试容器来验证 Docker 是否正确安装:

sudo docker run hello-world

步骤二:准备前端静态网页————本地电脑上面操作

1. 创建项目文件夹;

        在自己电脑上创建一个新的项目文件夹,例如 my-static-website

2. 将你的前端静态网页文件放入项目文件夹中;

        将你的静态网页文件(例如 index.html, style.css, script.js 等)放入 my-static-website 文件夹

3. 创建 Dockerfile 文件;

        在项目文件夹中创建一个 Dockerfile 文件,用于定义 Docker 镜像的构建过程。以下是一个使用 Nginx 作为基础镜像的 Dockerfile 示例

# 使用官方 Nginx 镜像作为基础镜像
FROM nginx:alpine# 将当前目录下的所有文件复制到 Nginx 容器中的默认 html 目录
COPY . /usr/share/nginx/html# 暴露容器的 80 端口
EXPOSE 80# 运行 Nginx
CMD ["nginx", "-g", "daemon off;"]

步骤三:构建 Docker 镜像————本地电脑上面操作

1. 导航到项目文件夹;使用cmd终端或命令行工具进入你的项目文件夹中

cd path_to_your_project_folder/my-static-website

2. 构建 Docker 镜像

运行以下命令来构建 Docker 镜像:

docker build -t my-static-website .

解释:

  • docker build: 构建一个新的 Docker 镜像。
  • -t my-static-website: 为镜像指定一个标签(my-static-website)。
  • .: 表示 Dockerfile 位于当前目录

3. 确认 Docker 镜像已构建成功 ;运行以下命令查看本地 Docker 镜像列表:

docker images

步骤四:镜像上传

这里提供两种上传方式,一种是上传到指定镜像库,然后从服务器上通过pull命令拉取;

另外针对离线环境,与外网隔绝的情况下,可以通过把镜像打成tar包进行手动上传到服务器;

方式一:推送 Docker 镜像到 Docker Hub(或其他镜像仓库)————本地电脑上面操作

1. 登录 Docker Hub 运行以下命令登录到 Docker Hub:

docker login

2. 标记镜像;将构建的本地镜像标记为 Docker Hub 上的镜像:

docker tag my-static-website your_dockerhub_username/my-static-website

解释:

  • docker tag: 为本地镜像创建一个新的标签。
  • my-static-website: 本地镜像名称。
  • your_dockerhub_username/my-static-website: Docker Hub 上的镜像名称。

3. 推送镜像 将标记的镜像推送到 Docker Hub:

docker push your_dockerhub_username/my-static-website

解释:

  • docker push: 推送镜像到镜像仓库。
  • your_dockerhub_username/my-static-website: 目标镜像名称。

方式二:将镜像打包成tar包,通过ssh工具上传到远程服务器

1. 导出 Docker 镜像为 tar 文件 

使用 docker save 命令将 Docker 镜像保存为 tar 文件,tar文件默认保存在当前路径;

docker save -o my-static-website.tar my-static-website:latest

2. 通过远程工具(如xftp)工具将镜像压缩文件上传到服务

-------这里根据实际的ftp文件而定;

步骤五:在远程服务器上获取并运行 Docker 镜像——————进入远程服务器上面操作

方式一:docker镜像仓库拉取

1. 在远程服务器上登录 Docker Hub 使用以下命令登录 Docker Hub

sudo docker login

2. 拉取镜像 运行以下命令从 Docker Hub 拉取镜像

sudo docker pull your_dockerhub_username/my-static-website

解释:

  • sudo docker pull: 从镜像仓库拉取镜像。
  • your_dockerhub_username/my-static-website: 要拉取的镜像名称。

方式二:手动上传的镜像

​​​​​​​1. 导航到 tar 文件所在目录,使用 cd 命令进入上传的 tar 文件所在目录:

cd /path/to/upload

2. 导入 Docker 镜像,使用 docker load 命令将 tar 文件导入为 Docker 镜像:

sudo docker load -i my-static-website.tar

解释:

  • docker load: 从文件中加载镜像。
  • -i my-static-website.tar: 指定输入文件

后续步骤两种方式都是一样的操作:

3. 运行容器 运行以下命令启动容器:

sudo docker run -d -p 80:80 your_dockerhub_username/my-static-website

解释:

  • sudo docker run: 运行一个新的容器。
  • -d: 后台运行容器。
  • -p 80:80: 将容器的 80 端口映射到主机的 80 端口。
  • your_dockerhub_username/my-static-website: 要运行的镜像名称。

步骤六:通过网址访问静态页面————本地电脑上面操作

1. 确认服务器上的防火墙允许 HTTP 流量 使用以下命令确保服务器允许 HTTP 流量:

sudo ufw allow 80/tcp

2. 访问你的域名或服务器 IP 地址;在浏览器中输入你的服务器 IP 地址或域名来访问你的静态网站。例如:

http://your_server_ip

结语

通过以上步骤,你已经成功地将前端静态网页通过 Docker 部署到远程服务器上,并且可以通过网址访问该静态页面。如果有任何问题,请随时联系。

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

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

相关文章

C++入门(C语言过渡)

文章目录 前言一、C关键字二、命名空间三、C输入&输出四、缺省参数五、函数重载六、引用七、inline八、nullptr总结 前言 C是一种通用的、高级的、静态类型的编程语言,它在20世纪80年代由丹尼斯里奇创建的C语言基础上发展而来。以下是C发展的一些重要里程碑。 1…

kafka 生产者

生产者 生产者负责创建消息,然后将其投递到Kafka中。 负载均衡 轮询策略。随机策略。按照 key 进行hash。 Kafka 的默认分区策略:如果指定了 key,key 相同的消息会发送到同一个分区(分区有序);如果没有…

const 修饰不同内容区分

1.修饰局部变量 const int a 1;int const a 1; 这两种是一样的 注意: const int b; 该情况下编译器会报错:常量变量"b”需要初始值设定项 将一个变量没有赋初始值直接const修饰后,在以后时无法更改内容的。 2.修饰常量字符串 a.…

【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

学习资源: 全同态加密I:理论与基础(上海交通大学 郁昱老师) 全同态加密II:全同态加密的理论与构造(Xiang Xie老师) 现在第二代(如BGV和BFV)和第三代全同态加密方案都是基…

第10章:网络与信息安全

目录 第10章:网络与信息安全 网络概述 计算机网络概念 计算机网络的分类 网络的拓扑结构 ISO/OSI网络体系结构 网络互联硬件 物理层互联设备 数据链路层互联设备 网络层互联设备 应用层互联设备 网络的协议与标准 网络标准 TCP/IP协议族 网络接口层协…

浅谈反射机制

1. 何为反射? 反射(Reflection)机制指的是程序在运行的时候能够获取自身的信息。具体来说,反射允许程序在运行时获取关于自己代码的各种信息。如果知道一个类的名称或者它的一个实例对象, 就能把这个类的所有方法和变…

PyQt5显示QImage并将QImage转换为PIL图像保存到缓存

PyQt5显示QImage并将QImage转换为PIL图像保存到缓存 1、效果图 2、流程 1、获取摄像头资源,打开摄像头 2、截取图像 3、opencv读的通道是BGR,要转成RGB 4、往显示视频的Label里显示QImage 5、将QImage转换为PIL图像,并保存到缓存 6、获取图像中人脸信息3、代码 # -*- codin…

python-22-零基础自学python-数据分析基础 打开文件 读取文件信息

学习内容:《python编程:从入门到实践》第二版 知识点: 读取文件 、逐行读取文件信息等 练习内容: 练习10-1:Python学习笔记 在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python知识,其中…

Docker-11☆ Docker Compose部署RuoYi-Cloud

一、环境准备 1.安装Docker 附:Docker-02-01☆ Docker在线下载安装与配置(linux) 2.安装Docker Compose 附:Docker-10☆ Docker Compose 二、源码下载 若依官网:RuoYi 若依官方网站 鼠标放到"源码地址"上,点击"RuoYi-Cloud 微服务版"。 跳转至G…

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上,比如需要在请求之前展示loading效果,或者在登录的时候判断身份信息(token)等信息有没有过期,再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前,之后做的一…

创建react的脚手架

Create React App 中文文档 (bootcss.com) 网址:creat-react-app.bootcss.com 主流的脚手架:creat-react-app 创建脚手架的方法: 方法一(JS默认): 1. npx create-react-app my-app 2. cd my-app 3. …

【深度学习练习】心脏病预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …

comsol随机材料参数赋值

comsol随机材料参数赋值 在comsol中定义外部matlab函数 在comsol中定义外部matlab函数 首选项,安全性,允许 材料中,将杨氏模量更改为变量函数 计算 应力有波动,可见赋值成功 也可以看到赋值的材料参数:

CnosDB:深入理解时序数据修复函数

CnosDB是一个专注于时序数据处理的数据库。CnosDB针对时序数据的特点设计并实现了三个强大的数据修复函数: timestamp_repair – 对时间戳列进行有效修复,支持插入、删除、不变等操作。value_repair – 对值列进行智能修复,根据时间戳间隔和…

Unity | Shader基础知识(第十七集:学习Stencil并做出透视效果)

目录 一、前言 二、了解unity预制的材质 三、什么是Stencil 四、UGUI如何使用Stencil(无代码) 1.Canvas中Image使用Stencil制作透视效果 2.学习Stencil 3.分析透视效果的需求 五、模型如何使用Stencil 1.shader准备 2.渲染顺序 3.Stencil代码语…

CFS三层内网渗透——外网打点(一)

目录 外网打点 先爆破一下看看有没有啥可进攻路径 尝试那个可疑的路径发现是thinkphp这个框架,同时也知道了版本,那就nday打吧 写入php ​编辑写入php成功,简简单单nday拿下​编辑 蚁剑rce尝试链接 打点成功 外网打点 先爆破一下看看有…

前端使用Threejs加载机械臂并控制机械臂跳舞

1. 前言 在我的第一篇博客中,大致讲解了如何使用threejs导入机械臂模型,以及如何让机械臂模型动起来的案例,可以看一下之前的博客前端使用Threejs控制机械臂模型运动 本篇博客主要讲解的是在原来的基础上添加GSAP动画库的应用,可以通过动画,来让机械臂进行指定轨迹位姿的运动…

【鸿蒙学习笔记】页面布局

官方文档:布局概述 常见页面结构图 布局元素的组成 线性布局(Row、Column) 了解思路即可,更多样例去看官方文档 Entry Component struct PracExample {build() {Column() {Column({ space: 20 }) {Text(space: 20).fontSize(15)…

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

conda中创建环境并安装tensorflow1版本

conda中创建环境并安装tensorflow1版本 一、背景二、命令三、验证一下 一、背景 最近需要使用tensorflow1版本的&#xff0c;发个记录&#xff01; 二、命令 conda create -n tf python3.6 #创建tensorflow虚拟环境 activate tf #激活环境&#xff0c;每次使用的时候都…