Last active
July 2, 2016 18:39
-
-
Save rajiteh/3ae819a60e80327d6a28747f5393b2d6 to your computer and use it in GitHub Desktop.
Run sabnzbd, couchpotato, and sickrage on docker, on windows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$LogLineContext = "MAIN" | |
Function LogLine($msg, $context) | |
{ | |
if($context -ne $null) { | |
$script:LogLineContext = $context | |
} | |
Write-host "[$($LogLineContext)]:" $msg | |
} | |
function RunCommand($cmd) { | |
LogLine "Executing: $($cmd)" | |
return (Invoke-Expression $cmd | Out-String -stream) | |
} | |
function RunContainer($name, $cmd) { | |
$sanitized = $($cmd -replace '"', '\`"') # Powershell escape + Sh escape | |
$exc = ('docker exec -it {0} sh -c "{1}"' -f $name, $sanitized) | |
RunCommand $exc | |
} | |
function IsContainerExists($name) { | |
$cmd = "docker ps -a -f name=`"^/$($name)`$`"" | |
return (RunCommand $cmd | select-string $name).length -gt 0 | |
} | |
function IsContainerStatus($name, $status) { | |
$cmd = "docker ps -a -f status=$status -f name=`"^/$($name)`$`"" | |
return (RunCommand $cmd | select-string $name).length -gt 0 | |
} | |
function StopAndRemoveContainer($name) { | |
if (IsContainerExists $name) { | |
if (IsContainerStatus $name "running") { | |
docker stop $name | |
} | |
docker rm $name | |
} | |
} | |
function Sabnzbd($port) { | |
$sabnzbd_data_container_name = "sabnzbd_data" | |
$sabnzbd_app_container_name = "sabnzbd" | |
$sabnzbd_config_dir = "F:\media_station\media\nzb-config" | |
$sabnzbd_dl_dir = "F:\media_station\media\nzb-dl" | |
$sabnzbd_watch_dir = "F:\media_station\media\nzb-watch\" | |
$sabnzbd_temp_dir = "F:\media_station\media\nzb-incomplete" | |
$sabnzbd_image_name = "linuxserver/sabnzbd" | |
$sabnzbd_port = $port | |
LogLine "Starting.." "sabnzbd" | |
StopAndRemoveContainer $sabnzbd_data_container_name | |
StopAndRemoveContainer $sabnzbd_app_container_name | |
docker create --name=$sabnzbd_data_container_name -v $sabnzbd_config_dir`:/config -v $sabnzbd_dl_dir`:/downloads -v $sabnzbd_temp_dir`:/incomplete-downloads -v $sabnzbd_watch_dir`:/watch -v /admin $sabnzbd_image_name | |
docker create --name=$sabnzbd_app_container_name --volumes-from $sabnzbd_data_container_name -p $sabnzbd_port`:8080 $sabnzbd_image_name | |
docker start $sabnzbd_app_container_name | |
RunContainer $sabnzbd_app_container_name '[ -d "/config/admin" ] && cp -r /config/admin /' | |
RunContainer $sabnzbd_app_container_name 'echo "* * * * * abc cp -r /admin /config" > /etc/cron.d/admin_sync' | |
RunContainer $sabnzbd_app_container_name 'chown -R abc:abc /admin' | |
RunContainer $sabnzbd_app_container_name 'chown -R abc:abc /watch' | |
RunContainer $sabnzbd_app_container_name 'echo "America/Toronto" >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata' | |
} | |
function CouchPotato($port) { | |
$cp_data_container_name = "cp_data" | |
$cp_app_container_name = "cp" | |
$cp_config_dir = "F:\media_station\media\cp-config\" | |
$cp_dl_dir = "F:\media_station\media\nzb-dl" | |
$cp_movies_dir = "F:\media_station\media\movies\" | |
$cp_image_name = "linuxserver/couchpotato" | |
$cp_port = $port | |
LogLine "Starting.." "couchpotato" | |
StopAndRemoveContainer $cp_data_container_name | |
StopAndRemoveContainer $cp_app_container_name | |
docker create --name=$cp_data_container_name -v $cp_config_dir`:/config -v $cp_dl_dir`:/downloads -v $cp_movies_dir`:/movies $cp_image_name | |
docker create --name=$cp_app_container_name --volumes-from $cp_data_container_name -p $cp_port`:5050 $cp_image_name | |
docker start $cp_app_container_name | |
RunContainer $cp_app_container_name 'echo "America/Toronto" >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata' | |
} | |
function Sickrage($port) { | |
$sickrage_data_container_name = "sickrage_data" | |
$sickrage_app_container_name = "sickrage" | |
$sickrage_config_dir = "F:\media_station\media\sr-config\" | |
$sickrage_dl_dir = "F:\media_station\media\nzb-dl" | |
$sickrage_tv_dir = "F:\media_station\media\tv" | |
$sickrage_image_name = "linuxserver/sickrage" | |
$sickrage_port = $port | |
LogLine "Starting.." "sickrage" | |
StopAndRemoveContainer $sickrage_data_container_name | |
StopAndRemoveContainer $sickrage_app_container_name | |
docker create --name=$sickrage_data_container_name -v $sickrage_config_dir`:/config-backup -v $sickrage_dl_dir`:/downloads -v $sickrage_tv_dir`:/tv -v /config $sickrage_image_name | |
docker create --name=$sickrage_app_container_name --volumes-from $sickrage_data_container_name -p $sickrage_port`:8081 $sickrage_image_name | |
docker start $sickrage_app_container_name | |
RunContainer $sickrage_app_container_name '[ -e "/config-backup/config.ini" ] && cp -r /config-backup/* /config/' | |
RunContainer $sickrage_app_container_name 'echo "* * * * * abc cp -r /config/* /config-backup/" > /etc/cron.d/config_sync' | |
RunContainer $sickrage_app_container_name 'chown -R abc:abc /config' | |
RunContainer $sickrage_app_container_name 'chown -R abc:abc /config-backup' | |
RunContainer $sickrage_app_container_name 'echo "America/Toronto" >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata' | |
} | |
LogLine "Start." | |
Sabnzbd 4201 | |
CouchPotato 4202 | |
Sickrage 4203 | |
LogLine "Finished." "MAIN" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment