Docker(二)Docker+ server部署极简前端页面

news/2024/5/5 22:56:20

本篇文章介绍如何使用 Docker+server 将一个极简前端页面进行部署

1.本地运行一个简单的前端页面,再把它部署到服务器上

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1> hellow docker!</h1>
</body>
</html>

package.json

{"name": "nginxdocker","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "serve . -p 3030","test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","dependencies": {"serve": "^14.2.1"}
}

执行 npm i ,安装node_modules,npm run start 就行在本地运行起来了
下一步就是在服务器部署这个页面

2.Dockerfile 构建基础镜像

服务器系统:centos 7
docker:26.0.1
将刚才的index.html,package.json放在服务器新建的目录下(以下执行的命令都在次目录下执行),再创建文件Dockerfile

# 选择一个体积小的镜像 (~5MB)
FROM node:14-alpine# 设置为工作目录,以下 RUN/CMD 命令都是在工作目录中进行执行
WORKDIR /code# 把宿主机的代码添加到镜像中
ADD . /code# 安装依赖
RUN yarnEXPOSE 3000# 启动 Node Server
CMD npm start

构建镜像: docker build -t simple-app .

# 构建一个名为 simple-app 的镜像
# -t: "name:tag" 构建镜像名称
$ docker build -t simple-app .

查看镜像: docker images

$ docker images
REPOSITORY           TAG         IMAGE ID       CREATED          SIZE
simple-app           latest      c1571917d2c2   17 seconds ago   133MB

在这里插入图片描述

3.运行容器

我们可以基于一个镜像运行 N 个容器,而本次启动的容器也是我们最终所要提供的静态服务

# 根据该镜像运行容器
# 如果需要在后台运行则添加 -d 选项
# --rm: 当容器停止运行时,自动删除容器
# -p: 3000:3000,将容器中的 3000 端口映射到宿主机的 3000 端口,左侧端口为宿主机端口,右侧为容器端口
$ docker run --rm -p 3030:3030 simple-app# 运行成功后可在另一个窗口查看所有容器
$ docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                                       NAMES
50784910f758   simple-app   "docker-entrypoint.s…"   20 seconds ago   Up 20 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   wizardly_solomon

此时我们就行通过ip:3030 看到我们部署的页面

4.注意:此时我们修改index.html,再重新启动镜像是无效的

因为我们是基于当时的文件创建的镜像,要想修改成功,我们需要重新再次构建新的镜像,通过新的镜像再次运行容器。
如果我们想要更改代码页面即时更改,我们需要用到挂载目录

docker run --rm -p 3030:3030 -v /root/docker/dockerFile2:/code simple-app
5.目录挂载

我们将容器运行起来之后,再更改代码是不会立刻生效的,需要重新构建镜像、运行容器的,很麻烦。我们可以通过目录挂载的方法解决这个问题,我们把宿主机的目录映射到容器内的目录内,一个宿主机的目录可映射多个容器。这种方法也可以用来部署本地的开发环境

# 如果需要在后台运行则添加 -d 选项
#-p 端口映射,宿主机端口:容器内端口 
# --name 命名容器名字
# -v 宿主机目录:容器内目录(也就是dockerfile中WORKDIR的文件夹)
# 最后一个 simple-app 就是镜像名字
docker run -it -d --name test  -p 3031:3030 -v /root/docker/dockerFile2:/code simple-app

注意事项
宿主机也要npm i 一下,保持和镜像内的文件一致,不然会出现即时容器构建成功了,也不能运行。
如果容器构建成功但是不能运行,利用docker ps -a 查看容器的状态,如果一直是exited的状态,
我们可以通过 docker logs 容器ID // 查看容器日志 来查看报错。
常用的几个docker命令

docker images //查看镜像列表
docker rmi -f 镜像名/镜像ID  //删除镜像sudo docker ps //查看正在运行容器
sudo docker ps -a // 查看所有容器 -----包含正在运行 和已停止的
docker rm -f 容器名/容器ID //删除一个容器
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID  //删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f $(docker ps -aq)  //删除全部容器
docker stop 容器名/容器ID // 停止容器
docker start 容器名/容器ID // 开始容器
docker restart 容器名/容器ID // 重启容器
docker attach 容器ID/容器名 // 进入正在运行中的容器
docker logs 容器ID // 查看容器日志

http://www.mrgr.cn/p/63421303

相关文章

指令优化:基于大型语言模型的指令算子的进化多目标指令优化

指令优化:基于大型语言模型的指令算子的进化多目标指令优化 摘要 基于指令的语言建模在预训练的语言模型中受到了极大的关注。 提出了一种指令优化方法,将指令生成视为一个进化的多目标优化问题,利用大型语言模型(LLM)来模拟指令运算符,包括变异和交叉。 此外,为这些运算…

探索直播+电商系统中台架构:连接消费者与商品的智能纽带

随着直播电商的崛起&#xff0c;电商行业进入了全新的智能时代。直播形式的互动性和即时性为消费者提供了全新的购物体验&#xff0c;而电商平台则为商品的展示、销售和配送提供了强大的支持。在这一背景下&#xff0c;直播电商系统中台架构成为了连接消费者与商品的智能纽带&a…

【STM32+HAL+Proteus】系列学习教程---串口USART(DMA 方式)定长,不定长收发。

实现目标 1、利用UART实现上位机PC与下位机开发板之间的数据通信 2、学会STM32CubeMX软件关于UART的DMA模式配置 3、具体目标&#xff1a;1、实现串口定长收发数据通信&#xff1b;2、串口不定长收发数据通信。 一、DMA简介 1、什么是DMA? DMA&#xff08;Direct Memory …

yolo-驾驶行为监测:驾驶分心检测-抽烟打电话检测

在现代交通环境中&#xff0c;随着汽车技术的不断进步和智能驾驶辅助系统的普及&#xff0c;驾驶安全成为了公众关注的焦点之一 。 分心驾驶&#xff0c;尤其是抽烟、打电话等行为&#xff0c;是导致交通事故频发的重要因素。为了解决这一问题&#xff0c;研究人员和工程师们…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树&#xff1f; 二叉树是一种二分查找树&#xff0c;有很好的查找性能&#xff0c;相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因&#xff1a; 但是当N比较大的时候&#xff0c;树的深度比较高。数据查询的时间主要依赖于…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…

wps屏幕录制怎么用?分享使用方法!

数字化时代&#xff0c;屏幕录制已成为我们学习、工作和娱乐中不可或缺的一部分。无论是制作教学视频、分享游戏过程&#xff0c;还是录制网络会议&#xff0c;屏幕录制都能帮助我们轻松实现。WPS作为一款功能强大的办公软件&#xff0c;其屏幕录制功能也备受用户青睐。本文将详…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

day13 ts后端持久层框架(java转ts全栈/3R教室)

简介&#xff1a;如果说TS全栈后端开发最重要的两个框架&#xff0c;除了nestjs就是持久层框架了&#xff0c;这里主要看下Typeorm&#xff08;java中常用的就是mybatis&#xff0c;springdatajpa&#xff0c;hebernite了&#xff09; 先回顾下ORM的概念&#xff1a;ORM就是建…

C# GetField 方法应用实例

目录 关于 C# Type 类 GetField 方法应用 应用举例 心理CT设计题 类设计 DPCT类实现代码 小结 关于 C# Type 类 Type表示类型声明&#xff1a;类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义&#xff0c;以及开放或封闭构造的泛型类型。调用 t…

二叉树的性质

性质一:二叉树的第i层上最多有2^(i-1) 个节点 性质二:深度为k的二叉树最多有2^(k)-1个节点 等比数列求和公式: 直接套进去就得到 2^(k)-1 (结点的度&#xff08;Degree) &#xff1a;结点子树的个数。树的度&#xff1a; 树中结点的最大度数。度为k的树也称为k叉树) 性质三:叶…

Uptime Kuma 使用指南:一款简单易用的站点监控工具

我平时的工作会涉及到监控&#xff0c;而站点是一个很重要的监控项。项目上线后&#xff0c;我们通常会将站点监控配置到云平台上&#xff0c;以检测各站点的连通性。但随着项目不断增多&#xff0c;云平台上的配额就有点捉急了。针对这个情况&#xff0c;我们可以试试这个开源…

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色。 先看效果图&#xff1a; 在CSS中&#xff0c;你可以使用border属性或者background属性来画一条虚线。以下是两种常见的方法&#xff1a; 方法一&#xff1a;使用border属性 你可以设置一个元素的border…

4.24日团队开发第五天

今天进行了晨会主要讨论了昨天完成情况,以及遇到的问题 同时针对完成度进行了分析,及时调整了进度

Linux 网络操作命令Telnet

Telnet 尽管 Telnet 已经逐渐被更安全的 SSH 协议所取代&#xff0c;但在某些特定场景下&#xff0c;如对旧系统的维护或教育目的&#xff0c;Telnet 仍然有其使用价值。本文将介绍如何在 Linux 系统中安装 Telnet 客户端&#xff0c;以及如何使用它进行远程登录。 用户使用 t…

MySQL 锁机制全面解析

目录 1. MySQL的锁类型1.1 全局锁1.2 表锁1.3 行锁1.4 共享锁&#xff08;读锁&#xff09;1.5 排它锁&#xff08;写锁&#xff09;1.6 死锁 2 乐观锁和悲观锁2.1 乐观锁2.2 悲观锁 3 意向锁4 间隙锁5 临键锁6 插入意向锁7. 事务隔离级别对锁的影响6.1 读未提交&#xff08;Re…

账号安全及应用

一、账号安全控制 1.1系统账号清理 将用户设置为无法登陆 锁定账户 删除账户 设定账户密码&#xff0c;本质锁定 锁定配置文件-chattr&#xff1a; -a 让文件或目录仅供附加用途。只能追加 -i 不得任意更动文件或目录。 1.2密码安全控制 chage 1.3历史命令 history&am…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

Hive主要介绍

Hive介绍 hive是基于 Hadoop平台操作 HDFS 文件的插件工具 可以将结构化的数据文件映射为一张数据库表 可以将 HQL 语句转换为 MapReduce 程序 1.hive 是由驱动器组成&#xff0c;驱动器主要由4个组件组成&#xff08;解析器、编译器、优化器、执行器&#xff09; 2.hive本身不…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代&#xff0c;网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种&#xff0c;它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议&#xff0c;首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…