mirror of
https://github.com/fluxerapp/fluxer.git
synced 2026-09-03 05:10:25 +03:00
47 lines
1.3 KiB
Bash
Executable File
47 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
set -uo pipefail
|
|
|
|
SOCKET="${DOCKER_SOCKET:-/var/run/docker.sock}"
|
|
USER_NAME="${USER:-vscode}"
|
|
|
|
if [ ! -S "$SOCKET" ]; then
|
|
echo "fix-docker-socket: no socket at $SOCKET; skipping (Docker-in-devcontainer will not work)"
|
|
exit 0
|
|
fi
|
|
|
|
if docker version --format '{{.Server.Version}}' >/dev/null 2>&1; then
|
|
echo "fix-docker-socket: $SOCKET is already usable as $USER_NAME"
|
|
exit 0
|
|
fi
|
|
|
|
socket_gid="$(stat -c '%g' "$SOCKET" 2>/dev/null || echo "")"
|
|
if [ -z "$socket_gid" ]; then
|
|
echo "fix-docker-socket: could not stat $SOCKET; skipping" >&2
|
|
exit 0
|
|
fi
|
|
|
|
sudo sh -c '
|
|
set -e
|
|
gid="$1"
|
|
user="$2"
|
|
socket="$3"
|
|
if ! getent group "$gid" >/dev/null 2>&1; then
|
|
groupadd --gid "$gid" docker-host
|
|
fi
|
|
group_name="$(getent group "$gid" | cut -d: -f1)"
|
|
usermod --append --groups "$group_name" "$user"
|
|
chgrp "$gid" "$socket"
|
|
chmod g+rw "$socket"
|
|
' sh "$socket_gid" "$USER_NAME" "$SOCKET" || {
|
|
echo "fix-docker-socket: could not adjust $SOCKET; run docker with sudo" >&2
|
|
exit 0
|
|
}
|
|
|
|
if docker version --format '{{.Server.Version}}' >/dev/null 2>&1; then
|
|
echo "fix-docker-socket: $SOCKET is now usable as $USER_NAME (gid $socket_gid)"
|
|
else
|
|
echo "fix-docker-socket: $SOCKET still unreachable as $USER_NAME; run docker with sudo" >&2
|
|
fi
|