【发布时间】:2021-01-12 11:39:49
【问题描述】:
我正在使用 NodeJS 构建一个 Web 服务器,并且我正在使用 Nix 提供的 Docker Tools 为我的服务器构建图像。
我有以下 Dockerfile,我正在尝试将其转换为 .nix 文件
FROM node:12.20.0-alpine3.11 as build-deps
WORKDIR /hedwig-app
COPY ["package.json", "package-lock.json*", "./"]
RUN npm install
COPY . .
RUN npm run build
EXPOSE 8080
CMD [ "node", "build/index.js" ]
但是,我不知道如何将我的源代码复制到要构建的 Docker 映像中。这就是我目前所拥有的
{ pkgs ? import <nixpkgs> {} }:
let
baseImage = pkgs.dockerTools.pullImage {
imageName = "alpine";
imageDigest = "sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436";
sha256 = "119pbb2nrhs6nvbhhpcd52fqy431ag46azgxvgdmyxrwii97f4ah";
finalImageName = "alpine";
finalImageTag = "3.12";
};
sourceFiles = builtins.toString ./.;
gitignoreSrc = pkgs.fetchFromGitHub {
owner = "hercules-ci";
repo = "gitignore";
# put the latest commit sha of gitignore Nix library here:
rev = "c4662e662462e7bf3c2a968483478a665d00e717";
# use what nix suggests in the mismatch message here:
sha256 = "sha256:1npnx0h6bd0d7ql93ka7azhj40zgjp815fw2r6smg8ch9p7mzdlx";
};
inherit (import gitignoreSrc { inherit (pkgs) lib; }) gitignoreSource;
src = gitignoreSource ./.;
in
pkgs.dockerTools.buildImage {
name = "hedwig-api";
tag = "latest";
fromImage = baseImage;
contents = [ pkgs.nodejs ];
runAsRoot = ''
mkdir /hedwig-app
cp -r ${src} /hedwig-app
npm install
npm run build
'';
config = {
ExposedPorts = {
"8080/tcp" = {};
};
WorkingDir = "/hedwig-app";
Cmd = ["node" "build/index.js"];
};
}
在运行npm run build之前如何将我的源代码复制到图像中?
【问题讨论】: