在服务器上使用 Docker 部署 Node.js 应用程序时,Docker 可以帮助你简化 Node.js 的安装、依赖管理以及容器化部署过程。以下是从安装 Node.js 到部署 Node.js 应用的完整步骤。
1. 准备环境
首先,确保你的服务器已经安装了 Docker。如果还没有安装 Docker,可以根据以下步骤进行安装:
安装 Docker (CentOS/Ubuntu)
bash
# 对于 Ubuntu
sudo apt update sudo apt install docker.io -y
# 对于 CentOS
sudo yum install docker -y
启动 Docker 并设置开机自启:
bash
sudo systemctl start docker sudo systemctl enable docker
2. 编写 Node.js 应用
假设你已经有一个简单的 Node.js 应用。这里我们以一个简单的 Express
应用为例:
bash
mkdir my-node-app cd my-node-app
然后创建 package.json
和 index.js
文件。
package.json
json
{ "name": "my-node-app", "version": "1.0.0", "description": "A simple Node.js app", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.17.1" } }
index.js
javascript
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello from Dockerized Node.js App!'); }); app.listen(port, () => { console.log(`App running at http://localhost:${port}`); });
在这个目录中,运行以下命令安装 express
:
bash
npm install
3. 创建 Dockerfile
Dockerfile
用来定义应用的构建和运行环境。在项目根目录中创建一个 Dockerfile
,内容如下:
Dockerfile
# 使用 Node.js 的官方镜像,指定版本为最新的 LTS
FROM node:18
# 设置工作目录为
/app WORKDIR /app
# 复制 package.json 和 package-lock.json COPY package*.json
./ #
安装依赖
RUN npm install
# 将项目文件全部复制到
/app COPY . .
# 暴露端口 3000
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]
4. 创建 .dockerignore
文件
在项目根目录下创建 .dockerignore
文件,防止一些不必要的文件被复制到 Docker 镜像中:
bash
node_modules
npm-debug.log
5. 构建 Docker 镜像
在项目的根目录下运行以下命令来构建 Docker 镜像:
bash
docker build -t my-node-app .
这将使用当前目录中的 Dockerfile
构建一个名为 my-node-app
的 Docker 镜像。过程中的每一步都会根据 Dockerfile
的定义来执行。
6. 运行 Docker 容器
使用以下命令运行构建好的 Docker 镜像:
bash
docker run -d -p 3000:3000 --name my-node-app-container my-node-app
-d
:表示后台运行容器-p 3000:3000
:将主机的 3000 端口映射到容器的 3000 端口--name my-node-app-container
:容器的名称
此时,你可以在浏览器中访问你的服务器的 IP 地址和端口 3000
,例如:
arduino
复制代码
http://<your-server-ip>:3000
你应该能看到页面显示 “Hello from Dockerized Node.js App!”。
7. 管理和查看容器
查看正在运行的容器
bash
docker ps
停止容器
bash
docker stop my-node-app-container
删除容器
bash
docker rm my-node-app-container
查看容器日志
bash
docker logs my-node-app-container
进入正在运行的容器
如果你想进入容器执行一些命令,可以使用以下命令:
bash
docker exec -it my-node-app-container /bin/bash
8. 使用 Docker Compose(可选)
如果你希望使用 Docker Compose 管理你的应用,创建一个 docker-compose.yml
文件:
docker-compose.yml
yaml
复制代码
version: '3'
services:
app: image: node:18
working_dir: /app
volumes: - .:/app
ports: - "3000:3000"
command: npm start
然后运行以下命令:
bash
复制代码
docker-compose up --build
这样可以更方便地管理容器化的多服务应用。