以下是一个简单的 Docker 实战案例,演示如何使用 Docker 来运行一个简单的 Web 应用。在这个案例中,我们将使用一个 Node.js 应用,并使用 Nginx 作为反向代理。

步骤 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