84 lines
1.6 KiB
Nix
84 lines
1.6 KiB
Nix
{ pkgs, ... }:
|
|
let
|
|
shlink-web-client = pkgs.runCommandLocal "shlink-web-client" { } ''
|
|
mkdir -p $out/var/www
|
|
cp -r ${pkgs.shlink-web-client} $out/var/www/shlink-web-client
|
|
'';
|
|
|
|
nginxConfig = pkgs.writeTextDir "/etc/nginx/nginx.conf" ''
|
|
user root;
|
|
daemon off;
|
|
pid /var/run/nginx.pid;
|
|
|
|
events { }
|
|
|
|
http {
|
|
include ${pkgs.nginx}/conf/mime.types;
|
|
default_type application/octet-stream;
|
|
|
|
charset utf-8;
|
|
|
|
access_log off;
|
|
error_log /dev/stderr;
|
|
|
|
server {
|
|
listen 8080 default_server;
|
|
|
|
root /var/www/shlink-web-client;
|
|
index index.html;
|
|
|
|
location = / {
|
|
return 301 /web/;
|
|
}
|
|
|
|
location = /web {
|
|
return 301 /web/;
|
|
}
|
|
|
|
location /web/ {
|
|
alias /var/www/shlink-web-client/;
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
}
|
|
}
|
|
'';
|
|
|
|
entrypoint = pkgs.writeTextFile {
|
|
name = "entrypoint";
|
|
executable = true;
|
|
destination = "/bin/entrypoint";
|
|
text = builtins.readFile ./entrypoint.sh;
|
|
};
|
|
in
|
|
pkgs.dockerTools.buildImage {
|
|
name = "shlink-web-client";
|
|
fromImage = import ../base { inherit pkgs; };
|
|
|
|
copyToRoot = pkgs.buildEnv {
|
|
name = "root";
|
|
paths = with pkgs; [
|
|
entrypoint
|
|
shlink-web-client
|
|
nginxConfig
|
|
nginx
|
|
];
|
|
pathsToLink = [
|
|
"/bin"
|
|
"/var"
|
|
"/etc"
|
|
];
|
|
};
|
|
|
|
runAsRoot = ''
|
|
mkdir -p /var/run /var/log/nginx
|
|
'';
|
|
|
|
config = {
|
|
Entrypoint = [ "entrypoint" ];
|
|
WorkingDir = "/var/www/shlink-web-client";
|
|
ExposedPorts = {
|
|
"8080/tcp" = { };
|
|
};
|
|
};
|
|
}
|