A simple tui to view & control docker containers
From 17b71b6b41f6a98a0f92277f40a88f4b1b8a1328 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Fri, 3 Feb 2023 21:40:14 +0000
Subject: [PATCH 08/17] feat: switch to scratch docker container
---
containerised/Dockerfile | 6 ++++--
containerised/Dockerfile_dev | 15 +++++++++++----
containerised/start_oxker.sh | 8 --------
src/docker_data/mod.rs | 23 +++++++++++++----------
src/main.rs | 31 ++++++++++++++++++++++++++++---
5 files changed, 56 insertions(+), 27 deletions(-)
delete mode 100755 containerised/start_oxker.sh
diff --git a/containerised/Dockerfile b/containerised/Dockerfile
index 525ea7d..9d0fe10 100644
--- a/containerised/Dockerfile
+++ b/containerised/Dockerfile
@@ -51,10 +51,12 @@ RUN cp /usr/src/oxker/target/$(cat /.platform)/release/oxker /
FROM alpine:latest AS runtime
+# Set an ENV that we're running in a container, so that the application can sleep for 250ms at start
+ENV OXKER_RUNTIME=container
+
# Copy application binary from builder image
COPY --from=builder /oxker /usr/local/bin
-COPY ./containerised/start_oxker.sh ./
# Run the application
# this is used in the application itself, to stop itself show when running from a docker container, so DO NOT EDIT
-ENTRYPOINT [ "./start_oxker.sh"]
+ENTRYPOINT [ "./app/oxker"]
diff --git a/containerised/Dockerfile_dev b/containerised/Dockerfile_dev
index 4a91c38..77a5522 100644
--- a/containerised/Dockerfile_dev
+++ b/containerised/Dockerfile_dev
@@ -1,16 +1,23 @@
#############
## Runtime ##
#############
+FROM scratch
-FROM alpine:latest AS runtime
+# Set env that we're running in a container, so that the application can sleep for 250ms at start
+ENV OXKER_RUNTIME=container
# Copy application binary from builder image
-COPY ./target/x86_64-unknown-linux-musl/release/oxker /usr/local/bin
-COPY ./containerised/start_oxker.sh ./
+COPY ./target/x86_64-unknown-linux-musl/release/oxker /app/
# Run the application
# this is used in the application itself, to stop itself show when running from a docker container, so DO NOT EDIT
-ENTRYPOINT [ "./start_oxker.sh"]
+ENTRYPOINT [ "./app/oxker"]
+
+# Dev build for testing
+# docker build -t oxker_dev -f Dockerfile . && docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro oxker_dev
+
+# Dev build one liner, x86 host
+# docker image prune -a; cargo build --release --target x86_64-unknown-linux-musl && docker build -t oxker_dev -f containerised/Dockerfile_dev . && docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro oxker_dev
## One liner to build musl program, build docker image, then execute the image
# cargo build --release --target x86_64-unknown-linux-musl && docker build -t oxker_dev -f containerised/Dockerfile . && docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro oxker_dev
diff --git a/containerised/start_oxker.sh b/containerised/start_oxker.sh
deleted file mode 100755
index 7ac5fa3..0000000
--- a/containerised/start_oxker.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-set -e
-
-# Without this sleep, the docker image will instantly close
-# No idea why this is solving my issue, or even where the issue is originally coming from
-sleep .1
-
-exec /usr/local/bin/oxker "$@"
\ No newline at end of file
diff --git a/src/docker_data/mod.rs b/src/docker_data/mod.rs
index 298de6c..ec90e0e 100644
--- a/src/docker_data/mod.rs
+++ b/src/docker_data/mod.rs
@@ -54,6 +54,7 @@ pub struct DockerData {
app_data: Arc
>,
args: CliArgs,
binate: Binate,
+ containerised: bool,
docker: Arc,
gui_state: Arc>,
is_running: Arc,
@@ -175,7 +176,7 @@ impl DockerData {
/// Get all current containers, handle into ContainerItem in the app_data struct rather than here
/// Just make sure that items sent are guaranteed to have an id
- /// Will ignore any container that uses `./start_oxker.sh` as an entry point, unless the `-s` flag is set
+ /// If in a containerised runtime, will ignore any container that uses the q`./app/oxker` as an entry point, unless the `-s` flag is set
pub async fn update_all_containers(&mut self) -> Vec<(bool, ContainerId)> {
let containers = self
.docker
@@ -190,15 +191,15 @@ impl DockerData {
.into_iter()
.filter_map(|f| match f.id {
Some(_) => {
- if f.command
- .as_ref()
- .map_or(false, |c| c.starts_with(ENTRY_POINT))
- && self.args.show_self
- {
- None
- } else {
- Some(f)
- }
+ if self.containerised && f.command
+ .as_ref()
+ .map_or(false, |c| c.starts_with(ENTRY_POINT))
+ && self.args.show_self
+ {
+ None
+ } else {
+ Some(f)
+ }
}
None => None,
})
@@ -414,6 +415,7 @@ impl DockerData {
/// Initialise self, and start the message receiving loop
pub async fn init(
app_data: Arc>,
+ containerised: bool,
docker: Docker,
docker_rx: Receiver,
gui_state: Arc>,
@@ -423,6 +425,7 @@ impl DockerData {
if app_data.lock().get_error().is_none() {
let mut inner = Self {
app_data,
+ containerised,
args,
binate: Binate::One,
docker: Arc::new(docker),
diff --git a/src/main.rs b/src/main.rs
index 9e3fdfe..a72e347 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -33,16 +33,33 @@ use ui::{create_ui, GuiState, Status};
use crate::docker_data::DockerMessage;
-const ENTRY_POINT: &str = "./start_oxker.sh";
+// this is the entry point when running as a Docker Container, and is used to check if we are running as a Docker Containerq
+const ENTRY_POINT: &str = "./app/oxker";
+/// Enable tracing, only really used in debug mode, for now
/// write to file if `-g` is set?
fn setup_tracing() {
tracing_subscriber::fmt().with_max_level(Level::INFO).init();
}
+/// An ENV is set in the ./containerised/Dockerfile, if this is ENV found, then sleep for 250ms, else the container, for as yet unknown reasons, will close immediately
+/// returns a bool, so that the `update_all_containers()` won't bother to check the entry point unless running via a container
+fn check_if_containerised() -> bool {
+ if std::env::vars()
+ .into_iter()
+ .any(|x| x == ("OXKER_RUNTIME".to_owned(), "container".to_owned()))
+ {
+ std::thread::sleep(std::time::Duration::from_millis(250));
+ true
+ } else {
+ false
+ }
+}
+
/// Create docker daemon handler, and only spawn up the docker data handler if a ping returns non-error
async fn docker_init(
app_data: &Arc>,
+ containerised: bool,
docker_rx: Receiver,
gui_state: &Arc>,
is_running: &Arc,
@@ -53,7 +70,12 @@ async fn docker_init(
let gui_state = Arc::clone(gui_state);
let is_running = Arc::clone(is_running);
tokio::spawn(DockerData::init(
- app_data, docker, docker_rx, gui_state, is_running,
+ app_data,
+ containerised,
+ docker,
+ docker_rx,
+ gui_state,
+ is_running,
));
} else {
app_data.lock().set_error(AppError::DockerConnect);
@@ -87,7 +109,10 @@ fn handler_init(
#[tokio::main]
async fn main() {
+ let containerised = check_if_containerised();
+
setup_tracing();
+
let args = CliArgs::new();
let app_data = Arc::new(Mutex::new(AppData::default(args)));
let gui_state = Arc::new(Mutex::new(GuiState::default()));
@@ -95,7 +120,7 @@ async fn main() {
let (docker_sx, docker_rx) = tokio::sync::mpsc::channel(16);
let (input_sx, input_rx) = tokio::sync::mpsc::channel(16);
- docker_init(&app_data, docker_rx, &gui_state, &is_running).await;
+ docker_init(&app_data, containerised, docker_rx, &gui_state, &is_running).await;
handler_init(&app_data, &docker_sx, &gui_state, input_rx, &is_running);
From 799800ef23acbca63d338feaa385e3dfc82701c2 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Fri, 3 Feb 2023 21:41:24 +0000
Subject: [PATCH 09/17] docs: changelog
---
CHANGELOG.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5fccd71..61eaa0e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,14 @@
### Chores
+ devcontainer.json updated, typos-cli installed, temporary(?) buildkit fix, [3c6a8db6ef74d499b49fabe8912785cac16d9c4b]
++ create_release.sh check for typos, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
### Docs
+ AUR install instructions, thanks [orhun](https://github.com/orhun), [c5aa346bca139cc5ece1f4127293977924d16fca]
+ typos fixes, thanks [kianmeng](https://github.com/kianmeng), [5052d7ab0a156c43cadbd922c0019b284f24943a]
++ Readme.md styling tweak, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
+
+### Features
++ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
# v0.2.1
### 2023-01-29
From d48e6561f95e7a454ff3b4b50467c3e51a1821d0 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Fri, 3 Feb 2023 21:49:19 +0000
Subject: [PATCH 10/17] chore: clippy todo warn
---
src/docker_data/mod.rs | 15 ++++++++-------
src/main.rs | 7 ++++++-
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/docker_data/mod.rs b/src/docker_data/mod.rs
index ec90e0e..ad0c500 100644
--- a/src/docker_data/mod.rs
+++ b/src/docker_data/mod.rs
@@ -191,15 +191,16 @@ impl DockerData {
.into_iter()
.filter_map(|f| match f.id {
Some(_) => {
- if self.containerised && f.command
+ if self.containerised
+ && f.command
.as_ref()
.map_or(false, |c| c.starts_with(ENTRY_POINT))
- && self.args.show_self
- {
- None
- } else {
- Some(f)
- }
+ && self.args.show_self
+ {
+ None
+ } else {
+ Some(f)
+ }
}
None => None,
})
diff --git a/src/main.rs b/src/main.rs
index a72e347..32443c0 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,10 @@
#![forbid(unsafe_code)]
-#![warn(clippy::unused_async, clippy::unwrap_used, clippy::expect_used)]
+#![warn(
+ clippy::expect_used,
+ clippy::todo,
+ clippy::unused_async,
+ clippy::unwrap_used
+)]
// Warning - These are indeed pedantic
#![warn(clippy::pedantic)]
#![warn(clippy::nursery)]
From 8437cca72ff7409eeac51e773f2224508cf5fd68 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Fri, 3 Feb 2023 22:39:09 +0000
Subject: [PATCH 11/17] docs: changelog
---
CHANGELOG.md | 2 +-
src/main.rs | 6 ++++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 61eaa0e..712dfff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@
+ Readme.md styling tweak, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
### Features
-+ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
++ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUNTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
# v0.2.1
### 2023-01-29
diff --git a/src/main.rs b/src/main.rs
index 32443c0..56b198f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -38,8 +38,10 @@ use ui::{create_ui, GuiState, Status};
use crate::docker_data::DockerMessage;
-// this is the entry point when running as a Docker Container, and is used to check if we are running as a Docker Containerq
+// this is the entry point when running as a Docker Container, and is used, in conjunction with the `CONTAINER_ENV` ENV, to check if we are running as a Docker Container
const ENTRY_POINT: &str = "./app/oxker";
+const ENV_KEY: &str = "OXKER_RUNTIME";
+const ENV_VALUE: &str = "container";
/// Enable tracing, only really used in debug mode, for now
/// write to file if `-g` is set?
@@ -52,7 +54,7 @@ fn setup_tracing() {
fn check_if_containerised() -> bool {
if std::env::vars()
.into_iter()
- .any(|x| x == ("OXKER_RUNTIME".to_owned(), "container".to_owned()))
+ .any(|x| x == (ENV_KEY.into(), ENV_VALUE.into()))
{
std::thread::sleep(std::time::Duration::from_millis(250));
true
From 0fca67795b518e83bd5cc272db9798223889dcce Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 02:27:54 +0000
Subject: [PATCH 12/17] chore: dependencies updated
---
Cargo.lock | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index b4e6e59..1eee179 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -408,6 +408,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "hermit-abi"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "856b5cb0902c2b6d65d5fd97dfa30f9b70c7538e770b98eab5ed52d8db923e01"
+
[[package]]
name = "hex"
version = "0.4.3"
@@ -450,9 +456,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
[[package]]
name = "hyper"
-version = "0.14.23"
+version = "0.14.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c"
+checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c"
dependencies = [
"bytes",
"futures-channel",
@@ -542,14 +548,14 @@ dependencies = [
[[package]]
name = "is-terminal"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
+checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.0",
"io-lifetimes",
"rustix",
- "windows-sys 0.42.0",
+ "windows-sys 0.45.0",
]
[[package]]
@@ -666,7 +672,7 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.2.6",
"libc",
]
@@ -856,16 +862,16 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.36.7"
+version = "0.36.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
+checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644"
dependencies = [
"bitflags",
"errno",
"io-lifetimes",
"libc",
"linux-raw-sys",
- "windows-sys 0.42.0",
+ "windows-sys 0.45.0",
]
[[package]]
@@ -1112,9 +1118,9 @@ dependencies = [
[[package]]
name = "tinyvec_macros"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
From b859fba8bf01faa7e20e3f2f7e1e8bc1256e9d59 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 03:13:56 +0000
Subject: [PATCH 13/17] fix: create_release echo
---
create_release.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/create_release.sh b/create_release.sh
index fa88c86..75484be 100755
--- a/create_release.sh
+++ b/create_release.sh
@@ -176,12 +176,16 @@ cargo_test () {
# This will download GB's of docker images
cargo_build () {
cargo install cross
+ echo -e "${YELLOW}cargo build --release${RESET}"
cargo build --release
ask_continue
+ echo -e "${YELLOW}cross build --target aarch64-unknown-linux-musl --release${RESET}"
cross build --target aarch64-unknown-linux-musl --release
ask_continue
+ echo -e "${YELLOW}cross build --target arm-unknown-linux-musleabihf --release${RESET}"
cross build --target arm-unknown-linux-musleabihf --release
ask_continue
+ echo -e "${YELLOW}cross build --target x86_64-pc-windows-gnu --release${RESET}"
cross build --target x86_64-pc-windows-gnu --release
ask_continue
}
@@ -190,7 +194,6 @@ cargo_build () {
release_continue () {
echo -e "\n${PURPLE}$1${RESET}"
ask_continue
-
}
# Check repository for typos
From 5aaa00d6a3c58d98cb250b7b14584238df02961c Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 03:27:58 +0000
Subject: [PATCH 14/17] docs: contributing guide added
---
CONTRIBUTING.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 CONTRIBUTING.md
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..1f21208
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,14 @@
+# Contributing to oxker
+
+oxker encourages any, and all, contributions as, suggestions, bug reports, pull requests, and feedback.
+
+## Submitting Issues
+
+Please use the oxker [issue templates for](https://github.com/mrjackwills/oxker/issues/new/choose) any Bug Report, Feature Suggestions,
+Refactor Idea, or Security Vulnerabilities.
+
+Don't hesitate to submit any issues or pull requests, regardless of size.
+
+## Conduct
+
+oxker follow the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct)
\ No newline at end of file
From a44b15f76088561a0e272d4e7456197c2aaabdb4 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 03:35:16 +0000
Subject: [PATCH 15/17] docs: contributing guide added
---
CONTRIBUTING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1f21208..ebfa982 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
# Contributing to oxker
-oxker encourages any, and all, contributions as, suggestions, bug reports, pull requests, and feedback.
+oxker encourages any, and all, suggestions, bug reports, pull requests, and/or feedback.
## Submitting Issues
From bf9911dffad1669677caebf0fc6f1936166e3241 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 03:36:04 +0000
Subject: [PATCH 16/17] docs: changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 712dfff..cb60a47 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
+ AUR install instructions, thanks [orhun](https://github.com/orhun), [c5aa346bca139cc5ece1f4127293977924d16fca]
+ typos fixes, thanks [kianmeng](https://github.com/kianmeng), [5052d7ab0a156c43cadbd922c0019b284f24943a]
+ Readme.md styling tweak, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
++ Contributing guide, [5aaa00d6a3c58d98cb250b7b14584238df02961c], [a44b15f76088561a0e272d4e7456197c2aaabdb4]
### Features
+ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUNTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
From 8b9d319fb507162d77e677ba0e777e89198f69f1 Mon Sep 17 00:00:00 2001
From: Jack Wills <32690432+mrjackwills@users.noreply.github.com>
Date: Sat, 4 Feb 2023 03:52:35 +0000
Subject: [PATCH 17/17] chore: release v0.2.2
---
.github/release-body.md | 23 +++++++++--------------
CHANGELOG.md | 17 ++++++++++-------
Cargo.lock | 2 +-
Cargo.toml | 2 +-
4 files changed, 21 insertions(+), 23 deletions(-)
diff --git a/.github/release-body.md b/.github/release-body.md
index dae66a3..fb82468 100644
--- a/.github/release-body.md
+++ b/.github/release-body.md
@@ -1,22 +1,17 @@
-### 2023-01-29
+### 2023-02-04
### Chores
-+ dependencies updated, [c129f474fe2976454b1868d00e8d7d99b87ec23b], [9788b8afd98e59b1d4412a8adc54b34d2c5671fd], [2ab88eb26e9bbbc4dad4651256d8d9b044ea3272]
++ devcontainer.json updated, typos-cli installed, temporary(?) buildkit fix, [3c6a8db6ef74d499b49fabe8912785cac16d9c4b]
++ create_release.sh check for typos, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
### Docs
-+ comment typo, [1025579138f11e4987263c7bfe936c4c8542f8b3]
++ AUR install instructions, thanks [orhun](https://github.com/orhun), [c5aa346bca139cc5ece1f4127293977924d16fca]
++ typos fixes, thanks [kianmeng](https://github.com/kianmeng), [5052d7ab0a156c43cadbd922c0019b284f24943a]
++ Readme.md styling tweak, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
++ Contributing guide, [5aaa00d6a3c58d98cb250b7b14584238df02961c], [a44b15f76088561a0e272d4e7456197c2aaabdb4]
-### Fixes
-+ deadlock on draw logs when no containers found, [68e444bfc393eb46bac2b99eb57697bb9b0451af]
-+ github workflow release on main only (with semver tag), [e4ca41dfd8ec3acae202a2d2464b8e18f5c5bdd5], [749ec712f07cff2c941aed6726c56bdbd5cb8d2c]
-
-### Refactors
-+ major refactor of internal data handling, [b4488e4bdb0252f5c5680cee6a46427f22a282ab]
-+ needless (double) referencing removed, [a174dafe1b05908735680a874dc551a86da24777]
-+ app_data methods re-ordered & renamed, [c0bb5355d6a5d352260655110ce3d5ab695acda9]
-
-### Reverts
-+ is_running AtomicBool back to SeqCst, [c4d80061dab94afd08d4d793dc147f878c965ad6]
+### Features
++ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUNTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
see CHANGELOG.md for more details
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cb60a47..c70df5f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,18 @@
+# v0.2.2
+### 2023-02-04
+
### Chores
-+ devcontainer.json updated, typos-cli installed, temporary(?) buildkit fix, [3c6a8db6ef74d499b49fabe8912785cac16d9c4b]
-+ create_release.sh check for typos, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
++ devcontainer.json updated, typos-cli installed, temporary(?) buildkit fix, [3c6a8db6](https://github.com/mrjackwills/oxker/commit/3c6a8db6ef74d499b49fabe8912785cac16d9c4b)
++ create_release.sh check for typos, [310a63f4](https://github.com/mrjackwills/oxker/commit/310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe)
### Docs
-+ AUR install instructions, thanks [orhun](https://github.com/orhun), [c5aa346bca139cc5ece1f4127293977924d16fca]
-+ typos fixes, thanks [kianmeng](https://github.com/kianmeng), [5052d7ab0a156c43cadbd922c0019b284f24943a]
-+ Readme.md styling tweak, [310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe]
-+ Contributing guide, [5aaa00d6a3c58d98cb250b7b14584238df02961c], [a44b15f76088561a0e272d4e7456197c2aaabdb4]
++ AUR install instructions, thanks [orhun](https://github.com/orhun), [c5aa346b](https://github.com/mrjackwills/oxker/commit/c5aa346bca139cc5ece1f4127293977924d16fca)
++ typos fixes, thanks [kianmeng](https://github.com/kianmeng), [5052d7ab](https://github.com/mrjackwills/oxker/commit/5052d7ab0a156c43cadbd922c0019b284f24943a)
++ Readme.md styling tweak, [310a63f4](https://github.com/mrjackwills/oxker/commit/310a63f4cabaa374797a7e4ed0d7fd1f5e79c8fe)
++ Contributing guide, [5aaa00d6](https://github.com/mrjackwills/oxker/commit/5aaa00d6a3c58d98cb250b7b14584238df02961c), [a44b15f7](https://github.com/mrjackwills/oxker/commit/a44b15f76088561a0e272d4e7456197c2aaabdb4)
### Features
-+ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUNTIME=container`, which is automatically set by the docker image, [17b71b6b41f6a98a0f92277f40a88f4b1b8a1328]
++ Use a scratch container for the docker image, should reduce image size by around 60%. This checks for the ENV `OXKER_RUNTIME=container`, which is automatically set by the docker image, [17b71b6b](https://github.com/mrjackwills/oxker/commit/17b71b6b41f6a98a0f92277f40a88f4b1b8a1328)
# v0.2.1
### 2023-01-29
diff --git a/Cargo.lock b/Cargo.lock
index 1eee179..f7785bd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -696,7 +696,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "oxker"
-version = "0.2.1"
+version = "0.2.2"
dependencies = [
"anyhow",
"bollard",
diff --git a/Cargo.toml b/Cargo.toml
index 7d2c93e..2521eb8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "oxker"
-version = "0.2.1"
+version = "0.2.2"
edition = "2021"
authors = ["Jack Wills "]
description = "A simple tui to view & control docker containers"