以下是一个示例的 Dockerfile,用于在 PHP 镜像中编排安装 Node.js、npm 和 yarn,并配置国内镜像源:
# 使用官方的 PHP 镜像作为基础镜像
FROM php:latest
# 安装系统依赖
RUN apt-get update && apt-get install -y \
curl \
unzip
# 安装 Node.js
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs
# 安装 npm 和 yarn
RUN npm install --global npm@latest
RUN npm install --global yarn@latest
# 配置国内镜像源
RUN npm config set registry https://registry.npm.taobao.org
RUN yarn config set registry https://registry.npm.taobao.org
# 运行命令行程序
CMD ["/bin/bash"]
这个 Dockerfile 通过使用 curl
命令下载 Node.js 安装脚本并运行,然后使用 apt-get
安装 Node.js。接着,使用 npm
安装最新版本的 npm 和 yarn。最后,使用 npm config set
和 yarn config set
命令配置国内镜像源。
你可以使用以上 Dockerfile 构建一个镜像。在构建镜像的过程中,Docker 将会根据 Dockerfile 中的指令逐行执行,并生成一个新的镜像。
在 Dockerfile 中安装 Node.js 库的最佳方式是使用 WORKDIR 指令将工作目录切换到你的 PHP 项目目录中,然后运行 npm 命令进行安装。以下是一个示例:
# 使用官方的 PHP 镜像作为基础镜像
FROM php:latest
# 安装系统依赖
RUN apt-get update && apt-get install -y \
curl \
unzip
# 安装 Node.js
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs
# 安装 npm 和 yarn
RUN npm install --global npm@latest
RUN npm install --global yarn@latest
# 切换工作目录到项目目录
WORKDIR /var/www/html/a
# 配置国内镜像源
RUN npm config set registry https://registry.npm.taobao.org
RUN yarn config set registry https://registry.npm.taobao.org
# 安装 laravel-mix 库
RUN npm install --save-dev laravel-mix
# 运行命令行程序
CMD ["/bin/bash"]
在以上示例中,使用 WORKDIR 指令将工作目录切换到 /var/www/html/a
,然后运行 npm install --save-dev laravel-mix 命令来安装 laravel-mix 库。请根据你的项目目录结构进行相应调整。
当构建镜像时,Docker 将会在指定的工作目录中运行命令,安装指定的库。
在 Dockerfile 中更换 apt-get 源可以通过在 Dockerfile 中修改 /etc/apt/sources.list
文件来实现。以下是一个示例:
# 使用官方的 PHP 镜像作为基础镜像
FROM php:latest
# 将 /etc/apt/sources.list 备份
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 将国内源的 sources.list 复制到 /etc/apt 目录下
COPY sources.list /etc/apt/
# 更新 apt-get 源
RUN apt-get update
# 安装系统依赖
RUN apt-get -y install curl unzip
# 安装 Node.js
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get -y install nodejs
# 安装 npm 和 yarn
RUN npm install --global npm@latest
RUN npm install --global yarn@latest
# 配置国内镜像源
RUN npm config set registry https://registry.npm.taobao.org
RUN yarn config set registry https://registry.npm.taobao.org
# 运行命令行程序
CMD ["/bin/bash"]
在这个示例中,我们首先将 /etc/apt/sources.list
文件备份,然后通过 COPY
指令将一个自定义的 sources.list
文件复制到 /etc/apt
目录中,该 sources.list
文件包含了中国国内的源。接着,我们使用 apt-get update
更新 apt-get 源。最后,我们按照之前的步骤继续安装 Node.js、npm、yarn,并配置国内镜像源。
你可以根据你自己需要更换 apt-get 源的 sources.list 内容。将你需要的 sources.list 文件放在和 Dockerfile 相同的目录下,并修改 Dockerfile 中的 COPY
指令相应地指向你的 sources.list 文件。
如果你没有自己的 sources.list
文件,你可以在 Dockerfile 中直接写入命令来更改 apt-get 源。以下是一个示例:
# 使用官方的 PHP 镜像作为基础镜像
FROM php:latest
# 更换 apt-get 源为中国国内源
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
# 更新 apt-get 源
RUN apt-get update
# 安装系统依赖
RUN apt-get -y install curl unzip
# 安装 Node.js
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get -y install nodejs
# 安装 npm 和 yarn
RUN npm install --global npm@latest
RUN npm install --global yarn@latest
# 配置国内镜像源
RUN npm config set registry https://registry.npm.taobao.org
RUN yarn config set registry https://registry.npm.taobao.org
# 运行命令行程序
CMD ["/bin/bash"]
在这个示例中,我们使用 sed
命令修改 /etc/apt/sources.list
文件中的源地址,将原来的 deb.debian.org
和 security.debian.org
替换为中国国内的源地址 mirrors.aliyun.com
。然后,我们使用 apt-get update
命令更新 apt-get 源。最后,我们按照之前的步骤继续安装 Node.js、npm、yarn 并配置国内镜像源。
这种方法不需要 sources.list
文件,直接在 Dockerfile 中更改源地址。