mirror of https://github.com/ekimekim/wubloader
Set up a docker compose file to run all images
For ease-of-use, we use a jsonnet file to generate the yaml. Jsonnet is a language for generating JSON documents. In this case it's useful to us because it lets us have comments, references to settings defined at the top, and some basic logic like converting qualities from a list of strings to a comma-seperated string. To avoid requiring jsonnet to be installed, we use the official jsonnet docker image in the generate script.pull/21/head
parent
25185f8f1f
commit
78a9a4e525
@ -1 +1 @@
|
||||
config.yaml
|
||||
docker-compose.yml
|
||||
|
@ -0,0 +1,60 @@
|
||||
// This is a jsonnet file, it generates a docker-compose.yml file.
|
||||
// To generate, run "make docker-compose.yml".
|
||||
|
||||
{
|
||||
|
||||
// These are the important top-level settings.
|
||||
// Change these to configure the services.
|
||||
|
||||
// Image tag (application version) to use.
|
||||
// Note: "latest" is not reccomended in production, as you can't be sure what version
|
||||
// you're actually running, and must manually re-pull to get an updated copy.
|
||||
image_tag:: "latest",
|
||||
|
||||
// Twitch channel to capture
|
||||
channel:: "desertbus",
|
||||
|
||||
// Stream qualities to capture in addition to source.
|
||||
qualities:: ["480p"],
|
||||
|
||||
// Local path to save segments to. Full path must already exist. Cannot contain ':'.
|
||||
segments_path:: "/var/lib/wubloader/",
|
||||
|
||||
// The host's port to expose the restreamer on.
|
||||
restreamer_port:: 8080,
|
||||
|
||||
|
||||
// Now for the actual docker-compose config
|
||||
|
||||
// docker-compose version
|
||||
version: "3",
|
||||
|
||||
services: {
|
||||
|
||||
downloader: {
|
||||
image: "quay.io/ekimekim/wubloader-downloader:%s" % $.image_tag,
|
||||
// Args for the downloader: set channel and qualities
|
||||
command: [
|
||||
$.channel,
|
||||
"--qualities", std.join(",", $.qualities),
|
||||
],
|
||||
// Mount the segments directory at /mnt
|
||||
volumes: ["%s:/mnt" % $.segments_path],
|
||||
// If the application crashes, restart it.
|
||||
restart: "on-failure",
|
||||
},
|
||||
|
||||
restreamer: {
|
||||
image: "quay.io/ekimekim/wubloader-restreamer:%s" % $.image_tag,
|
||||
// Mount the segments directory at /mnt
|
||||
volumes: ["%s:/mnt" % $.segments_path],
|
||||
// If the application crashes, restart it.
|
||||
restart: "on-failure",
|
||||
// Expose on the configured host port by mapping that port to the default
|
||||
// port for restreamer, which is 8000.
|
||||
ports: ["%s:8000" % $.restreamer_port],
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
# We generate first, and capture the output, to avoid overwriting the file on error.
|
||||
# To avoid jsonnet needing to exist locally, we run it in a container.
|
||||
output=$(docker run -i sparkprime/jsonnet - < docker-compose.jsonnet)
|
||||
|
||||
{
|
||||
echo "# DO NOT EDIT THIS FILE!"
|
||||
echo "# This file is generated from docker-compose.jsonnet"
|
||||
echo "# It can be generated by running ./generate-docker-compose"
|
||||
echo "$output"
|
||||
} > docker-compose.yml
|
Loading…
Reference in New Issue