Cycle containers on change
This commit is contained in:
parent
02d51b8ebf
commit
4dd1db342b
2 changed files with 33 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::Command;
|
use std::process::{Command, Stdio};
|
||||||
|
|
||||||
pub struct ComposeProject {
|
pub struct ComposeProject {
|
||||||
compose_file: PathBuf,
|
compose_file: PathBuf,
|
||||||
|
@ -39,6 +39,32 @@ impl ComposeProject {
|
||||||
let stdout = String::from_utf8(output.stdout).expect("Failed to parse output");
|
let stdout = String::from_utf8(output.stdout).expect("Failed to parse output");
|
||||||
stdout.trim().split('\n').map(String::from).collect()
|
stdout.trim().split('\n').map(String::from).collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn down(&self) -> bool {
|
||||||
|
match Command::new("docker-compose")
|
||||||
|
.stdout(Stdio::null())
|
||||||
|
.current_dir(self.working_directory())
|
||||||
|
.args(&["-f", &self.compose_file.to_string_lossy()])
|
||||||
|
.arg("down")
|
||||||
|
.status()
|
||||||
|
{
|
||||||
|
Ok(s) => s.success(),
|
||||||
|
Err(_) => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn up(&self) -> bool {
|
||||||
|
match Command::new("docker-compose")
|
||||||
|
.stdout(Stdio::null())
|
||||||
|
.current_dir(self.working_directory())
|
||||||
|
.args(&["-f", &self.compose_file.to_string_lossy()])
|
||||||
|
.args(&["up", "-d"])
|
||||||
|
.status()
|
||||||
|
{
|
||||||
|
Ok(s) => s.success(),
|
||||||
|
Err(_) => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for ComposeProject {
|
impl fmt::Display for ComposeProject {
|
||||||
|
|
|
@ -46,6 +46,12 @@ fn do_update(compose_project: compose::ComposeProject) {
|
||||||
|
|
||||||
if post_images == pre_images {
|
if post_images == pre_images {
|
||||||
info!("No change to images");
|
info!("No change to images");
|
||||||
|
} else {
|
||||||
|
info!("Changes detected - Cycling container");
|
||||||
|
warn!("Stopping container");
|
||||||
|
compose_project.down();
|
||||||
|
warn!("Starting container");
|
||||||
|
compose_project.up();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue