“详解nodejs之创建最小docker镜像”的完整攻略可以包括以下内容:
创建最小的Node.js Docker镜像
前提条件
- 安装Docker
- 熟悉Node.js
步骤
1. 创建一个新目录,然后进入该目录
mkdir mynodeapp
cd mynodeapp
2. 在该目录下创建一个名为app.js的文件
const http = require('http');
const os = require('os');
console.log("Kubernetes Node.js demo app. Version: 1.0.0");
var handleRequest = function(request, response) {
console.log("Received request for URL: " + request.url);
response.writeHead(200);
response.end("Kubernetes Node.js demo app running on " + os.hostname() + "\n");
};
var www = http.createServer(handleRequest);
www.listen(8080);
3. 创建一个名为Dockerfile的文件,并复制以下内容
# 基础镜像
FROM node:14-alpine
# 指定镜像创建者信息
LABEL maintainer="Your Name"
# 设定工作目录
WORKDIR /app
# 复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露8080端口
EXPOSE 8080
# 指定镜像默认执行命令
CMD ["npm", "start"]
Dockerfile 详解:
- FROM 用于指定父镜像,这里选择 Node.js 14 的 Alpine 版本,它是一个非常小的Linux发行版(只有 5MB 左右)并且基于musl C库构建,可以使镜像更加轻量级。
- LABEL 是可选的,用于指定镜像作者及其它相关信息。
- WORKDIR 命令设置工作目录。
- COPY 命令是用于复制依存关系文件和源代码文件到Docker容器中。
- RUN 命令用于执行命令并创建新的镜像层面。
- EXPOSE 命令向Docker容器中打开8080端口,使主机可以访问容器的端口。
- CMD 命令是设置容器默认执行的命令。这里是npm start
4. 在 Dockerfile 所在的目录中执行以下命令来创建一个 Docker 镜像
docker build -t mynodeapp .
5. 运行 Docker 镜像
docker run -p 8080:8080 mynodeapp
打开浏览器,访问 http://localhost:8080 ,将会显示:Kubernetes Node.js demo app running on(设备名称)。
示例1
假如我们的 Node.js 应用很小,甚至不需要依赖,那么我们可以通过以下 Dockerfile 来直接使用 Node.js 官方的最小镜像:
FROM node:14-alpine
WORKDIR /app
COPY app.js /app/
CMD [ "node", "app.js" ]
EXPOSE 8080
执行以下命令来创建并运行 Docker 镜像:
docker build -t mynodeapp .
docker run -p 8080:8080 mynodeapp
示例2
假设我们的 Node.js 应用该依赖了一些第三方模块,可以使用多阶段构建来最小化构建后容器的大小。在第一阶段中安装依赖,在第二阶段中拷贝依赖和代码文件并启动应用程序。以下是示例 Dockerfile:
# 第一阶段:安装依赖
FROM node:14-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
# 第二阶段:复制依赖和应用程序,然后启动应用程序
FROM node:14-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY app.js ./
EXPOSE 8080
CMD [ "node", "app.js" ]
运行以下命令进行创建并运行 Docker 镜像:
docker build -t mynodeapp .
docker run -p 8080:8080 mynodeapp
以上就是“详解nodejs之创建最小docker镜像”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解nodejs之创建最小docker镜像 - Python技术站