步骤 1: 准备应用代码
首先,创建一个简单的 Node.js 应用。在应用目录下创建一个 app.js 文件:
// app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Docker!\n');
});
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
步骤 2: 创建 Dockerfile
在应用目录下创建一个 Dockerfile,用于构建 Docker 镜像:
# Dockerfile
FROM node:14
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
步骤 3: 构建 Docker 镜像
在应用目录下打开终端,运行以下命令构建 Docker 镜像:
docker build -t mynodeapp .
步骤 4: 运行 Node.js 应用容器
使用以下命令运行 Node.js 应用容器:
docker run -d -p 3000:3000 --name mynodeapp mynodeapp
步骤 5: 准备 Nginx 配置
在应用目录下创建一个 Nginx 配置文件 nginx.conf:
# nginx.conf
server {
listen 80;
location / {
proxy_pass http://mynodeapp:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
步骤 6: 创建 Nginx Dockerfile
在应用目录下创建一个 Nginx Dockerfile,用于构建 Nginx 的 Docker 镜像:
# Nginx Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf
步骤 7: 构建 Nginx Docker 镜像
运行以下命令构建 Nginx Docker 镜像:
docker build -t mynginx .
步骤 8: 运行 Nginx 容器
运行 Nginx 容器,并连接到 Node.js 应用容器:
docker run -d -p 8080:80 --link mynodeapp:mynodeapp --name mynginx mynginx
步骤 9: 访问 Web 应用
现在,你可以通过浏览器访问 http://localhost:8080,或使用 curl 命令:
curl http://localhost:8080
你应该能够看到输出为 "Hello Docker!" 的信息,这表示 Node.js 应用已经通过 Nginx 反向代理成功运行。
这个简单的实战案例演示了如何使用 Docker 构建和运行一个包含 Node.js 应用和 Nginx 反向代理的容器化应用。实际场景中,你可以根据需要扩展和定制这个基础结构。
转载请注明出处:http://www.zyzy.cn/article/detail/10032/Docker