使用 NixOps 部署静态文件
Deploying static files with NixOps
我有一个程序依赖于服务器上可用的 static
和 config
目录以及二进制文件。 NixOps 的默认构建阶段不包括这些文件,据我所知,它只是编译二进制文件,然后将二进制文件复制到服务器。
如何修改构建阶段以使 static
和 config
目录在服务器上可用?我尝试添加:
preInstall = ''
echo "copying static and config files"
cp -a ../static $out/static
cp -a ../config $out/config
'';
但这似乎并没有真正复制文件,而且我从未看到 echo
命令被执行。 Here 是 NixOps 使用的配置文件的要点。服务器上的错误是:
[root@pprjam:~]# systemctl status pprjam
● pprjam.service - pprjam webapp
Loaded: loaded (/nix/store/z2s52f39p3dx8q9b06rkaqqw5mhdvnmq-unit-pprjam.service/pprjam.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2018-02-17 01:29:57 UTC; 1min 27s ago
Process: 6917 ExecStart=/nix/store/khilhwldcbm0xm3a3bzhy6f0kwdk8w1p-pprjam-0.0.0/bin/pprjam (code=exited, status=1/FAILURE)
Main PID: 6917 (code=exited, status=1/FAILURE)
Feb 17 01:29:51 pprjam systemd[1]: Started pprjam webapp.
Feb 17 01:29:56 pprjam pprjam[6917]: pprjam: static: getDirectoryContents:openDirStream: does not exist (No such file or directory)
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Main process exited, code=exited, status=1/FAILURE
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Unit entered failed state.
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Failed with result 'exit-code'.
在your gist it looks like you are merging the preInstall attribute onto the existing attributes for your pprjam package. That would mean that you are changing the attributes of your package after it has already been built. If that's right then you probably want to make use of overrideAttrs
instead (see the manual and source)。
另外,config
和 static
目录是指 /etc
中的目录吗?据我所知,它们对于 NixOS 系统来说是相当基础的,应该始终存在。
我有一个程序依赖于服务器上可用的 static
和 config
目录以及二进制文件。 NixOps 的默认构建阶段不包括这些文件,据我所知,它只是编译二进制文件,然后将二进制文件复制到服务器。
如何修改构建阶段以使 static
和 config
目录在服务器上可用?我尝试添加:
preInstall = ''
echo "copying static and config files"
cp -a ../static $out/static
cp -a ../config $out/config
'';
但这似乎并没有真正复制文件,而且我从未看到 echo
命令被执行。 Here 是 NixOps 使用的配置文件的要点。服务器上的错误是:
[root@pprjam:~]# systemctl status pprjam
● pprjam.service - pprjam webapp
Loaded: loaded (/nix/store/z2s52f39p3dx8q9b06rkaqqw5mhdvnmq-unit-pprjam.service/pprjam.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2018-02-17 01:29:57 UTC; 1min 27s ago
Process: 6917 ExecStart=/nix/store/khilhwldcbm0xm3a3bzhy6f0kwdk8w1p-pprjam-0.0.0/bin/pprjam (code=exited, status=1/FAILURE)
Main PID: 6917 (code=exited, status=1/FAILURE)
Feb 17 01:29:51 pprjam systemd[1]: Started pprjam webapp.
Feb 17 01:29:56 pprjam pprjam[6917]: pprjam: static: getDirectoryContents:openDirStream: does not exist (No such file or directory)
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Main process exited, code=exited, status=1/FAILURE
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Unit entered failed state.
Feb 17 01:29:57 pprjam systemd[1]: pprjam.service: Failed with result 'exit-code'.
在your gist it looks like you are merging the preInstall attribute onto the existing attributes for your pprjam package. That would mean that you are changing the attributes of your package after it has already been built. If that's right then you probably want to make use of overrideAttrs
instead (see the manual and source)。
另外,config
和 static
目录是指 /etc
中的目录吗?据我所知,它们对于 NixOS 系统来说是相当基础的,应该始终存在。