Skip to content

Commit 3ca5306

Browse files
authored
Refactor & Function Bump: Docker (#5889)
* Refactor: Docker * add more features * update_script * Update docker.sh
1 parent 93e2048 commit 3ca5306

File tree

2 files changed

+97
-25
lines changed

2 files changed

+97
-25
lines changed

ct/docker.sh

Lines changed: 63 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,73 @@ color
2020
catch_errors
2121

2222
function update_script() {
23-
header_info
24-
check_container_storage
25-
check_container_resources
26-
if [[ ! -d /var ]]; then
27-
msg_error "No ${APP} Installation Found!"
28-
exit
29-
fi
30-
msg_info "Updating ${APP} LXC"
31-
$STD apt-get update
32-
$STD apt-get -y upgrade
33-
msg_ok "Updated ${APP} LXC"
34-
exit
23+
header_info
24+
check_container_storage
25+
check_container_resources
26+
27+
get_latest_release() {
28+
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
29+
}
30+
31+
msg_info "Updating base system"
32+
$STD apt-get update
33+
$STD apt-get -y upgrade
34+
msg_ok "Base system updated"
35+
36+
msg_info "Updating Docker Engine"
37+
$STD apt-get install --only-upgrade -y docker-ce docker-ce-cli containerd.io
38+
msg_ok "Docker Engine updated"
39+
40+
if [[ -f /usr/local/lib/docker/cli-plugins/docker-compose ]]; then
41+
COMPOSE_BIN="/usr/local/lib/docker/cli-plugins/docker-compose"
42+
COMPOSE_NEW_VERSION=$(get_latest_release "docker/compose")
43+
msg_info "Updating Docker Compose to $COMPOSE_NEW_VERSION"
44+
curl -fsSL "https://github.com/docker/compose/releases/download/${COMPOSE_NEW_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
45+
-o "$COMPOSE_BIN"
46+
chmod +x "$COMPOSE_BIN"
47+
msg_ok "Docker Compose updated"
48+
fi
49+
50+
if docker ps -a --format '{{.Names}}' | grep -q '^portainer$'; then
51+
msg_info "Updating Portainer"
52+
$STD docker pull portainer/portainer-ce:latest
53+
$STD docker stop portainer && docker rm portainer
54+
$STD docker volume create portainer_data >/dev/null 2>&1
55+
$STD docker run -d \
56+
-p 8000:8000 \
57+
-p 9443:9443 \
58+
--name=portainer \
59+
--restart=always \
60+
-v /var/run/docker.sock:/var/run/docker.sock \
61+
-v portainer_data:/data \
62+
portainer/portainer-ce:latest
63+
msg_ok "Updated Portainer"
64+
fi
65+
66+
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
67+
msg_info "Updating Portainer Agent"
68+
$STD docker pull portainer/agent:latest
69+
$STD docker stop portainer_agent && docker rm portainer_agent
70+
$STD docker run -d \
71+
-p 9001:9001 \
72+
--name=portainer_agent \
73+
--restart=always \
74+
-v /var/run/docker.sock:/var/run/docker.sock \
75+
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
76+
portainer/agent
77+
msg_ok "Updated Portainer Agent"
78+
fi
79+
80+
msg_info "Cleaning up"
81+
$STD apt-get -y autoremove
82+
$STD apt-get -y autoclean
83+
msg_ok "Cleanup complete"
84+
exit
3585
}
3686

3787
start
3888
build_container
3989
description
4090

4191
msg_ok "Completed Successfully!\n"
42-
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
92+
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"

install/docker-install.sh

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,17 @@ echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json
2929
$STD sh <(curl -fsSL https://get.docker.com)
3030
msg_ok "Installed Docker $DOCKER_LATEST_VERSION"
3131

32-
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
32+
read -r -p "${TAB3}Install Docker Compose v2 plugin? <y/N> " prompt_compose
33+
if [[ ${prompt_compose,,} =~ ^(y|yes)$ ]]; then
34+
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
35+
mkdir -p /usr/local/lib/docker/cli-plugins
36+
curl -fsSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
37+
-o /usr/local/lib/docker/cli-plugins/docker-compose
38+
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
39+
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
40+
fi
41+
42+
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
3343
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
3444
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
3545
docker volume create portainer_data >/dev/null
@@ -43,9 +53,9 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
4353
portainer/portainer-ce:latest
4454
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
4555
else
46-
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
47-
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
48-
msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION"
56+
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
57+
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
58+
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
4959
$STD docker run -d \
5060
-p 9001:9001 \
5161
--name portainer_agent \
@@ -57,12 +67,25 @@ else
5767
fi
5868
fi
5969

60-
read -r -p "${TAB3}Expose Docker TCP socket (⚠️ insecure)? <y/N> " prompt
61-
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
62-
msg_info "Enabling Docker TCP socket on port 2375 (insecure)"
63-
64-
mkdir -p /etc/docker
65-
echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
70+
read -r -p "${TAB3}Expose Docker TCP socket (insecure) ? [n = No, l = Local only (127.0.0.1), a = All interfaces (0.0.0.0)] <n/l/a>: " socket_choice
71+
case "${socket_choice,,}" in
72+
l)
73+
socket="tcp://127.0.0.1:2375"
74+
;;
75+
a)
76+
socket="tcp://0.0.0.0:2375"
77+
;;
78+
*)
79+
socket=""
80+
;;
81+
esac
82+
83+
if [[ -n "$socket" ]]; then
84+
msg_info "Enabling Docker TCP socket on $socket"
85+
$STD apt-get install -y jq
86+
87+
tmpfile=$(mktemp)
88+
jq --arg sock "$socket" '. + { "hosts": ["unix:///var/run/docker.sock", $sock] }' /etc/docker/daemon.json > "$tmpfile" && mv "$tmpfile" /etc/docker/daemon.json
6689

6790
mkdir -p /etc/systemd/system/docker.service.d
6891
cat <<EOF > /etc/systemd/system/docker.service.d/override.conf
@@ -75,14 +98,13 @@ EOF
7598
$STD systemctl daemon-reload
7699

77100
if systemctl restart docker; then
78-
msg_ok "Docker TCP socket now available on tcp://0.0.0.0:2375"
101+
msg_ok "Docker TCP socket available on $socket"
79102
else
80103
msg_error "Docker failed to restart. Check journalctl -xeu docker.service"
81104
exit 1
82105
fi
83106
fi
84107

85-
86108
motd_ssh
87109
customize
88110

0 commit comments

Comments
 (0)