当前位置:网站首页 >  攻略

服务器容器化部署:新手30分钟跑通,再也不怕项目搬家崩

时间:2026年06月05日 11:30:45 来源:易频IT社区
上周加班到凌晨三点,小王哭丧着脸找我吐槽:刚把测试通的电商小程序搬到阿里云,服务器直接给我“甩脸子”,一会儿是Node.js版本不对,一会儿是Redis密码没生效,折腾到天亮才勉强能用,明天还得搬MySQL备份,想想都头大。 是不是戳中你的痛处了?不管你是刚做小程序的个人站长,还是公司里管小项目的技术新手,环境不一致、部署慢、出问题难查这些破事,肯定没少耽误你事。今天这篇文章,我用最干的大白话,给你讲透服务器容器化部署的核心逻辑,还有一个30分钟就能跑通的Node.js+Redis实战,看完直接用,再也不用当“搬家救火员”。 一、先搞懂容器化是啥,别被技术词唬住 别听网上瞎扯什么“微服务底座”“轻量级虚拟化”,其实就是一句话的事,把你的项目和要用的所有环境,打包成一个“随身U盘”,插哪里都能用。 1.1 举个更具体的生活例子 以前你搬家(换服务器),得自己搬家具(项目代码)、搬冰箱电源插座(Node.js环境)、装WiFi密码配置(Redis配置),搬完还要一个个调试位置(适配服务器参数),累得半死不说,万一插座型号不对(Linux发行版不一样),还得临时找转换器(改代码/降版本)。 现在用容器化,你把家具、电源插座、WiFi密码提前打包在一个集装箱里(镜像),搬家的时候直接把集装箱运过去,往服务器的空地上(容器运行环境)一放,通电就能用,连家具的位置都和之前一模一样。 1.2 新手只需要记住两个核心词 不用记一堆Docker、K8s的大词,今天咱们只搞最简单的单容器部署,记住这两个就行: - 镜像(Image):就是刚才说的“打包好的集装箱”,只读的,你不能在里面改东西,要改得重新打包。 - 容器(Container):就是“从镜像里拆出来正在运行的房子”,是临时的,重启、删除都不会影响镜像本身。 二、准备工作,5分钟搞定所有“搭架子”的事 新手别乱下乱七八糟的软件,咱们用最通用的Docker,先在自己电脑和服务器上都装上就行。 2.1 电脑上装Docker Desktop 不管你是Windows还是Mac,直接搜“Docker Desktop官网”,下载对应版本,一路“下一步”安装就行。 避坑提醒:Windows电脑要先开Hyper-V或者WSL2,安装的时候Docker会提示你,跟着重启电脑就好,别跳过重启。 2.2 服务器上装Docker 服务器一般都是CentOS或者Ubuntu,我给你两个最常用的一行命令,复制粘贴就行: CentOS 7/8的命令 ``` curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` Ubuntu 20.04/22.04的命令 ``` curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` 安装完记得启动Docker,再设置开机自启,不然服务器重启了项目就停了: ``` systemctl start docker systemctl enable docker ``` 三、30分钟实战:把你的Node.js小项目打包上线 我假设你有一个最简单的Node.js+Redis的计数器项目,没有的话也没关系,我给你现成的代码片段,跟着敲就行。 3.1 先在本地写好项目代码 新建一个文件夹叫`counter-demo`,里面放三个文件: 第一个文件:index.js(主程序) ```javascript const express = require('express'); const redis = require('redis'); const app = express(); const client = redis.createClient({ // 这里注意:容器里不能用localhost host: 'redis-server', port: 6379 }); client.set('visits', 0); app.get('/', (req, res) => { client.get('visits', (err, visits) => { res.send(`你是第${parseInt(visits) + 1}位访客!`); client.set('visits', parseInt(visits) + 1); }); }); app.listen(8080, () => { console.log('服务运行在8080端口'); }); ``` 第二个文件:package.json(依赖声明) ```json { "dependencies": { "express": "", "redis": "2.8.0" }, "scripts": { "start": "node index.js" } } ``` 第三个文件:Dockerfile(打包规则) 新手别自己瞎写Dockerfile,就用这个通用的Node.js模板,复制粘贴就行: ```dockerfile 第一步:选一个基础镜像,相当于选好集装箱的壳 FROM node:14-alpine 第二步:在容器里建一个工作目录 WORKDIR /app 第三步:把package.json复制进去,先装依赖 COPY package.json ./ RUN npm install 第四步:把剩下的所有文件复制进去 COPY ./ ./ 第五步:告诉别人容器要开哪个端口 EXPOSE 8080 第六步:启动项目 CMD ["npm", "start"] ``` 避坑提醒:Dockerfile的名字一个字都不能错,必须是D开头大写,后面全小写,没有后缀。 3.2 在本地测试一下,确保能跑通 打开你的终端(Windows用PowerShell,Mac用Terminal),进入`counter-demo`文件夹,执行下面三个命令: 1. 拉取Redis镜像 ``` docker pull redis:6-alpine ``` 2. 启动Redis容器 ``` docker run -d --name redis-server redis:6-alpine ``` 3. 打包你的项目镜像并启动 ``` 打包镜像,注意最后有个点! docker build -t my-counter . 启动你的项目容器,和Redis连在一起 docker run -d -p 8080:8080 --link redis-server:redis-server my-counter ``` 现在打开浏览器,输入`http://localhost:8080`,刷新几次,看看访客数会不会涨,涨了就说明本地测试成功。 3.3 推送到阿里云镜像仓库,再搬到服务器 自己拉镜像推镜像太慢,咱们用国内的阿里云镜像仓库,免费的,注册一个就行。 1. 注册并创建阿里云镜像仓库 打开阿里云控制台,搜“容器镜像服务”,点进去,选“个人版”,创建一个命名空间(比如叫`my-namespace`),再创建一个仓库(比如叫`counter-demo`),仓库类型选“公开”(新手方便,后续可以改私有)。 2. 在本地登录并推送到阿里云 创建完仓库,阿里云会给你4个命令,直接复制粘贴到终端就行,注意把命令里的`xxx`换成你自己的信息。 3. 在服务器上拉取并启动 用SSH登录你的服务器,执行和本地差不多的命令,只是镜像地址换成阿里云的: ``` 拉取Redis镜像(和本地一样) docker pull redis:6-alpine 启动Redis容器(和本地一样) docker run -d --name redis-server redis:6-alpine 拉取你的项目镜像 docker pull registry.cn-hangzhou.aliyuncs.com/my-namespace/counter-demo:latest 启动你的项目容器 docker run -d -p 8080:8080 --link redis-server:redis-server registry.cn-hangzhou.aliyuncs.com/my-namespace/counter-demo:latest ``` 现在打开浏览器,输入`http://你的服务器公网IP:8080`,看看能不能用! 四、几个新手必备的小技巧,避免踩大坑 刚才的实战跑通了,但日常用还得知道这几个点: 4.1 容器重启后数据不会丢? 刚才的Redis容器,如果重启或者删除,访客数会清零,因为Redis默认存在内存里。解决办法也很简单,启动Redis的时候加个参数,把数据存到服务器的硬盘上: ``` docker run -d --name redis-server -v /root/redis-data:/data redis:6-alpine --appendonly yes ``` 4.2 项目代码改了怎么更新? 改完代码后,重新打包镜像、推送到阿里云、服务器上拉取新镜像、删除旧容器、启动新容器就行,步骤和刚才的差不多,熟练了3分钟就能搞定。 今天这篇文章讲的是最基础的单容器部署,但已经能解决90%的个人站长和小项目的问题了。别犹豫,现在就去建个文件夹,跟着我写的代码敲一遍,先在本地跑通,再推到服务器上试试,相信我,试过一次你就会爱上容器化部署的。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图