91
packages/docker/shlink-web-client/default.nix
Normal file
91
packages/docker/shlink-web-client/default.nix
Normal file
@@ -0,0 +1,91 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
selfPkgs = inputs.self.packages.${system};
|
||||
|
||||
shlink-web-client = pkgs.runCommandLocal "shlink-web-client" { } ''
|
||||
mkdir -p $out/var/www
|
||||
cp -r ${selfPkgs.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 = [
|
||||
entrypoint
|
||||
shlink-web-client
|
||||
nginxConfig
|
||||
pkgs.nginx
|
||||
];
|
||||
pathsToLink = [
|
||||
"/bin"
|
||||
"/var"
|
||||
"/etc"
|
||||
];
|
||||
};
|
||||
|
||||
runAsRoot = ''
|
||||
${pkgs.dockerTools.shadowSetup}
|
||||
mkdir -p /var/run /var/log/nginx
|
||||
'';
|
||||
|
||||
config = {
|
||||
Entrypoint = [ "entrypoint" ];
|
||||
WorkingDir = "/var/www/shlink-web-client";
|
||||
ExposedPorts = {
|
||||
"8080/tcp" = { };
|
||||
};
|
||||
};
|
||||
}
|
11
packages/docker/shlink-web-client/entrypoint.sh
Normal file
11
packages/docker/shlink-web-client/entrypoint.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -o errexit
|
||||
|
||||
if [ -n "$SHLINK_SERVER_URL" ] && [ -n "$SHLINK_SERVER_API_KEY" ]; then
|
||||
SHLINK_SERVER_NAME="${SHLINK_SERVER_NAME:-Shlink}"
|
||||
SHLINK_SERVER_FORWARD_CREDENTIALS="${SHLINK_SERVER_FORWARD_CREDENTIALS:-false}"
|
||||
echo "[{\"name\":\"${SHLINK_SERVER_NAME}\",\"url\":\"${SHLINK_SERVER_URL}\",\"apiKey\":\"${SHLINK_SERVER_API_KEY}\",\"forwardCredentials\":${SHLINK_SERVER_FORWARD_CREDENTIALS}}]" > /var/www/shlink-web-client/servers.json
|
||||
fi
|
||||
|
||||
exec nginx -c /etc/nginx/nginx.conf "$@"
|
Reference in New Issue
Block a user