Docker笔记:简单部署 nodejs 项目和 golang 项目

Golang vs Node.js:WebSocket 性能大比拼 本文旨在全面比较Golang和Node.js在实现WebSocket服务时的性能表现。我们将关注连接建立速度、消息吞吐量、内存占用和CPU利用率等关键指标,同时分析两种技术栈在不同负载场景下的表现。文章首先介绍WebSocket基础概念,然后分析Golang和Node.js的语言特性,接着展示详细的性能测试方法和结果,最后给出实际应用建议。WebSocket:一种在单个TCP连接上进行全双工通信的协议Goroutine:Golang中的轻量级线程实现Event Loop。 阅读详情

docker 简单的维护 nodejs 项目容器

1 )Nodejs 程序

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('首页')
})

app.get('/news', (req, res) => {
  res.send('news')
})

// dokcer 做端口映射不要指定ip
app.listen(3000)

2 ) 运行镜像

  • docker pull node 拉取nodejs镜像
  • docker run -it -d --name mynode -p 3000:3000 -v /root/www:root/ node /bin/bash

3 )维护容器

  • docker ps 查看
  • docker inspect 容器id | grep root 查看容器的部署情况
  • docker exec -it 容器id /bin/bash 进入容器目录
    • 再次进入项目目录,安装依赖 cnpm i
    • node app.js 这样会一直占用控制台,替换成 nohup node app.js &
    • 之后,ps -aux 看到 有一个程序命令为 node app.js 的进程
    • 测试 cur 127.0.0.1:3000 正常
  • 退出容器,使用物理机ip和端口测试,访问正常

4 )测试迭代

  • 修改源代码后,重启
    • 杀掉之前的进程
      • ps -aux 找到 node进程的 PID
      • kill -9 PID
    • 重启
      • nohup node app.js &
  • 验证迭代

dockerfile 部署 nodejs 程序

1 )编写 Dockerfile

FROM node
COPY . /root/nodedemo # 将当前项目所有文件拷贝到 /root/nodedemo目录中
WORKDIR /root/nodedemo
RUN npm i cnpm -g --registry=https://registry.npm.taobao.org
RUN cnpm i
ENTRYPOINT node app.js
EXPOSE 3000
  • 注意,上面的执行顺序,先拷贝,再安装依赖

2 ) 构建镜像

  • 构建镜像 $ docker build -t nodedemo:v1.0.0 .

3 ) 运行容器

  • 运行容器
    • $ docker run -itd -p 3000:3000 nodedemo:v1.0.0

4 ) 检查

  • 物理机内检查: curl 127.0.0.1:3000 正常
  • 获取物理机ip: ip addr
  • 客户端访问: xxx.xxx.xxx.xxx:3000 正常
  • docker ps 获取容器id
  • docker exec -it 容器id /bin/bash
    • ls 看到我们部署后的目录文件

docker 部署 beego 项目

1 )部署编译好的golang项目

源码目录

  • src
    • go.mod
    • main.go

main.go

package main

import (
	"fmt"
	"net/http"
)

func handlerHello(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "hello docker")
}

func main() {
	http.HandleFunc("/", handlerHello)
	http.ListenAndServe(":8080", nil)
}
  • 运行: go run main.go
  • 编译: go build
    • 生成 goweb.exe (用windows下的编译来准备)
  • 运行编译后的: 双击 goweb.exe 或 ./goweb
  • 在 windows上编译成 linux的可执行文件
    • set GOOS=linux
    • set GOARCH=amd64
    • go build -o “filename”,直接 go build 也可以

Dockerfile

FROM centos
COPY . /root/godemo # 将当前项目拷贝到容器内的目录
WORKDIR /root/godemo
EXPOSE 8080
ENTRYPOINT ["./goweb"]
  • go build -t goimage .

  • docker images 获取刚编译好的 goimage 的 imageId

  • docker run -itd --name my_go_image -p 8080:8080 imageId

  • docker ps 获取当前容器id

  • docker exec -it 容器id /bin/bash

  • curl 127.0.0.1:8080 访问容器上的go应用,正常

  • exit 退出到物理机

  • curl 127.0.0.1:8080 访问物理机上的go应用,正常

  • 注意:

    • 如果上述映射端口失败,重启docker: systemctl restart docker
  • 之后走正常的,将web应用打包镜像,运行生成容器,访问ip

    • 如果访问不了,关闭防火墙
    • 客户端可正常访问
  • 注意,golang 应用 和 beego框架应用都类似

2 )部署未编译好的golang项目和beego项目

  • 比上面就多了一步编译
  • 在linux上要安装golang, 才能运行go build

安装golang的方法1

  • 在centos中安装golang, 借助上面的方法

安装golang的方法2

  • 直接使用 golang 镜像
  • 我们采用这种方式

Dockerfile

FROM golang
ADD . /root/goweb
WORKDIR /root/goweb
RUN go build # 执行编译
EXPOSE 8080
ENTRYPOINT ['./goweb']
  • 注意,上述 WORKDIR 与 RUN 的顺序
  • docker build -t goimage2 . 构建镜像
  • docker run -itd --name mygoimage2 -p 8081:8080 goimage2 启动容器
  • docker ps 获取容器id
  • docker exec -it 容器id /bin/bash
    • go nev 看go的环境
    • curl 127.0.0.1:8080 可正常访问
  • exit退出后,在物理机访问:127.0.0.1:8081 可正常访问

部署未编译的 beego 项目

  • bee --help 查看 beego 命令
    • bee dockerize 可创建一个dockerfile
  • beego 提供的 dockerfile 可能需要修改
FROM golang
COPY . /root/beegodemo
WORKDIR /root/beegodemo

ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn

RUN go get github.com/beego/bee
EXPOSE 8082
ENTRYPOINT ['bee', 'run']
  • docker build -t goimage3 .
  • docker images 查看刚构建好的镜像
  • docker run -itd --name mybeego03 -p 8082:8082 goimage3
  • docker ps 查看容器id
  • 直接物理机访问:127.0.0.1:8082 正常
  • 除了 ENTRYPOINT [‘bee’, ‘run’] 这种方式运行,还可以
    • RUN bee pack
    • ENTRYPOINT [‘nohup’, ‘./beepkg’]
全面掌握Docker和AWS云服务:Travis CI、ReactJS、NodeJS、MySQL实战指南 本文还有配套的精品资源,点击获取 简介:本文深入探讨了现代Web开发和云计算相关的一系列技术,包括Docker容器化技术、AWS云服务、云服务概念、持续集成工具Travis CI以及前端框架ReactJS、后端语言NodeJS和数据库管理系统MySQL的应用。文章旨在帮助开发者通过实践学习如何利用这些技术构建、部署和管理高性能的Web应用程序,并理解这些技术在不同开发环节中... 阅读详情

相关推荐

Go环境安装----NodeJS

NodeJS for windows.. go语言安装VSCode时,调试GO需要使用npm,需要安装好NodeJS rar包括(node-v8.9.4-x64.msi node-v8.11.3-x86.msi )

[Docker]六.Docker自动部署nodejs以及golang项目

Docker自动部署nodejs以及golang项目,自动化部署编译好的golang项目,部署未编译的golang项目,部署编译好的beego项目,部署未编译好的beego项目

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 2380

OTFS从零开始11 10

未来的无线网络有望提供全球覆盖,因此需要支持在恶劣环境下的各种新兴应用,例如飞机上的移动通信(MCA)、低地球轨道(LEO)卫星通信、车对车(V2V)通信、高速铁路(HSR)通信、无人驾驶飞机(UAV)通信和水下声学通信(UAC)。在这些恶劣环境中的无线信道通常被视为对通信不友好,其特点是严重的延迟和多普勒扩散,以及有限的路径寿命等。这些不利于通信的特性使目前移动网络中广泛采用的正交频分复用(OFDM)调制的性能恶化。

qq_46009045的博客 9862

如何获取 docker 容器(container)的 ip 地址(转)

1. 进入容器内部后 cat /etc/hosts    会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID> 或 docker inspect <container id> 或 ...

weixin_33946020的博客 1230

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7341

SAP中MRP运行计划行超限问题的分析与解决

SAP中基于生产性物料的采购特点,通常会采用采购计划协议的方式进行采购。其具体的采购计划通常来自于成品计划独立需求,然后通过物料清单,经由MRP跑出。 在采购计划协议中的计划行中,存在一个计划行号,随着MRP在不断跑出新的计划行,该行号资源会消耗完。当计划行号消耗完后,MRP不会再跑出新的计划行。且在MD04或MD02中看不到类似提示信息。此时可以通过MD05来查看是否出现类似下图的提示信息。 ...

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 3845

Docker部署Golang+Gin和Python+Tornado后端和NodeJS+Web框架

如何快速使用Docker部署后端?案例有Golang + Gin 和 Python + Tornado 和 NodeJS + Web框架

VictorZhang 1493

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)

本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。

weixin_30335575的博客 537

Docker 实战:Docker常见仓库Node.js

以上步骤涵盖了从拉取官方Node.js镜像、创建及运行容器、构建自定义应用镜像、直至使用Docker Compose进行多服务编排的整个过程。实际应用场景中,可能还需要根据具体需求进一步调整配置。在Docker实战中,Node.js是一个常用的开发和运行环境。设置工作目录为/app,最后指定使用的镜像以及启动时执行的命令(这里是bash)。此命令将容器内部的8080端口映射到宿主机的8080端口,并以守护进程模式运行。参数将宿主机当前目录映射到容器内的/app目录,表示以交互模式运行容器,

qq_33240556的博客 1107

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定?

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定? 首先,我们进行触摸屏一侧的设置,如下图所示: 触摸屏背后有拨码开关,当我们需要上传或下载程序时,需要将7#开关拨到上面; 左侧是DC24V电源接口; 下方是COM1、COM2和COM3通信端口,选择我们需要的端口后,插上通信电缆,拔掉24V电源,然后重新上电; 然后,屏幕会进入如下图所示界面,此时显示当前选择的端口为COM2,我们点击F2“config”,进入设置界面, 可以看到COM2端口是“Enabled”

Robot_PLC_HMI_Automation 3万+

openharmony之启动恢复子系统详解

需求: 添加一个名为my_service的自定义服务步骤1: 创建服务配置],],"env": [步骤2: 添加到主配置],"jobs": ["cmds": [步骤3: 验证配置# ✅ 检查配置格式 jq . /system/etc/init/my_service.cfg # 🔄 重新加载配置 begetctl reload # 📊 验证服务状态 begetctl dump_service my_serviceOpenHarmony init进程的完整生命周期。🔄 三阶段启动模型⚙️ 配置体系。

m0_67505153的博客 603

Golang入门完全指南:为什么它是云原生时代最值得学的语言?(Backend-NodeJS-Golang-Interview_QA)

想系统入门 Go 语言却不知道从哪下手?这份 **Golang 入门完全指南** 就是为你准备的。在云原生、微服务与后端开发岗位需求持续攀升的今天,Go(Golang)凭借简洁的语法、原生的并发模型和强悍的执行性能,成为越来越多开发者转型与进阶的首选语言。本文不仅会带你梳理 Go 语言入门路线与核心概念,还会结合开源仓库 **Backend-NodeJS-Golang-Interview_QA**

gitblog_00120的博客 890

RGB渐变颜色转换公式及例程

设Step=51,将RGB(255,0,0)颜色渐变为RGB(0,255,0),即RGB(255,0,0)经过51次颜色渐变转为RGB(0,255,0);设Step=51,将RGB(0,255,0)颜色渐变为RGB(0,0,255),即RGB(0,255,0)经过51次颜色渐变转为RGB(0,0,255);设Step=51,将RGB(0,0,255)颜色渐变为RGB(255,0,0),即RGB(0,0,255)经过51次颜色渐变转为RGB(255,0,0);分步骤的方式,使其渐变色循环整个颜色值;

1万+

Golang1.5到Golang1.12包管理:golang vendor 到 go mod

1. 前言 Golang 是一门到如今有十年的静态高级语言了,2009年的时候算是正式推出了,然后到最近的一两年,2017-2018年的时候,突然直线上升,爆火了,得益于容器化运维/直播/短视频/区块链... 我从2016年毕业的时候,第一份工作,就接触了 Golang 语言,那时公司用 Java 处理数据流,然后用 Golang 写高...

weixin_34221276的博客 795

智能车图像处理12-进阶篇4--环岛辅助判断条件

主函数: 第6行: 含义是当前需要不在坡道和车库状态 第11-12行 : 寻找一下环岛的双断点(在辅助函数中) 第16-66行: 当左右线的方差满足一边很大,一边很小时,truepianfangflag /truepianfangflagforleft 置1,在环岛的判断中使用。 辅助函数: 双断点函数(左与右相似,以做为例): 第13-28行: 第一处断点 第29-40行: 第一处断点后 连续边线 第41-52行: 第一处连续后,第二处断点 第53-64行: 第二处断点后,第二处

taiyuezyh的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

gProfiler多语言支持详解:如何同时分析Java、Python、PHP、.NET、Ruby、NodeJS和Golang应用

在现代微服务架构中,应用通常使用多种编程语言开发,这给性能分析带来了巨大挑战。gProfiler作为一款强大的系统级性能分析工具,提供了完整的**多语言性能分析支持**,让您能够同时监控和分析Java、Python、PHP、.NET、Ruby、NodeJS和Golang等多种语言应用的性能表现。🚀 ## 为什么需要多语言性能分析? 在复杂的生产环境中,一个系统可能同时运行着Java后端服务、

gitblog_00300的博客 1056

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python、golang、java、nodejs的HTTP性能对比

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、测试环境二、测试方案11.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 这.

luxingjyp的专栏 4740

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Crawlab 分布式爬虫管理平台中文指南:Golang 架构、Docker 部署与多语言爬虫集成

Crawlab 是一个基于 Golang 构建的分布式爬虫管理平台,核心价值在于**不受编程语言和框架限制**——Python、NodeJS、Go、Java、PHP 等语言编写的爬虫都可以接入统一管理。本文以仓库内 [README-zh.md](https://link.gitcode.com/i/5602a5f271163672ac7d2444dc36236a) 为骨架,结合仓库源码([core

gitblog_00781的博客 709

Docker部署 nodejs项目应用 一 : 安装docker

尝试一下用docker容器,那么首先要安装docker一、安装docker   由于笔者服务器的系统是centos7,所以这里写的是在centos7上安装docker;  注:Docker 要求 CentOS 系统的内核版本高于 3.10     我们可以用以下命令来查看centos版本 [root@franklocalhost ~]# uname -r 3.10.0-957.el7.x86_64 确定centos内核版本高于3.10后,接下来开始安装: 1、安装所需的软件包   y...

DLMFer的专栏-Dalian Mainframer 965

简单说明爬虫管理平台Crawlab的部署及Docker的访问应用

简单说明爬虫管理平台Crawlab的部署及Docker的访问应用

maxiubin666的博客 2012

Docker + Jenkins + Nginx 实战前端自动化部署

通过以上步骤,我们实现了一个完整的前端自动化部署流程。从代码提交到最终部署,全部由 Jenkins 自动完成,大大提高了部署效率和代码发布的可靠性。希望这篇文章能帮助你搭建自己的前端自动化部署流程。

OKCRoss的博客 1197

WSL快速在Ubuntu安装golang、python、deno、nodejs、bunjs、java前后端全栈一体化开发环境及docker、podman配置

使用wsl,安装Ubuntu系统,并移动到D盘。

mirana的专栏 2121

crawlab通过docker单节点部署简单爬虫

rawlab是一个基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP、Ruby等多种语言以及各种爬虫框架。以上就是通过Docker单节点部署Crawlab并运行简单爬虫的步骤。在实际操作中,你需要根据自己的需求对爬虫代码进行编写。

cici15874的博客 889

Golang与Node.js容器化部署终极指南:Docker环境下两种语言的性能对比

在当今云原生时代,容器化部署已经成为现代应用开发的标准实践。Golang-for-nodejs-developers项目为从Node.js转向Go语言的开发者提供了宝贵的对比学习资源,帮助开发者更好地理解两种语言在容器化环境下的表现差异。🚀 ## 为什么选择容器化部署? 容器化技术如Docker为应用提供了标准化的运行环境,确保应用在不同环境中的一致性。对于Golang和Node.js这两种

gitblog_00141的博客 1059

Docker + Jenkins + Nginx实现前端自动化部署

文章有点长,如果你是以学习的态度来看这篇文章,建议收藏起来慢慢看。 前端自动化部署一直以来概念很清楚知道怎么回事,但是其中怎么操作没怎么研究过,虽然之前环境都搭起来了,但是也只是Jenkins构建项目成功,比如提交代码之后怎么触发自动构建,打包后的文件如何迁移到指定服务器的文件目录下,流水线如何搞等等这都是我之前想想头疼也只能头疼的问题。终于还是费了点心思搞了搞自动化部署,又花了大量时间来记录这个过程。

编码世界 7万+

蓝易云 - crawlab通过docker单节点部署简单爬虫

Crawlab是一个基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP、Ruby等多种语言以及各种爬虫框架。以上就是通过Docker单节点部署Crawlab并运行简单爬虫的步骤。在实际操作中,你需要根据自己的需求对爬虫代码进行编写。

高性价比服务器就选:蓝易云 215
上一篇: Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志
下一篇: Docker笔记:配置docker网络与不同网络之间的通信及跨主机通信
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值