mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 20:03:37 +00:00
feat: add docker group support with sg docker command
Improve Docker access handling by detecting and using 'sg docker' command when the user is in the docker group but hasn't logged out yet. This allows running docker commands without requiring a full session restart after `usermod -aG docker $USER`. Changes: - Detect docker group access and fall back to sg docker -c when needed - Export DOCKER_CMD variable for use throughout the script - Update all docker compose and docker ps commands to use DOCKER_CMD - Improve error messages to guide users on fixing docker access issues
This commit is contained in:
@@ -200,6 +200,8 @@ check_required_commands() {
|
||||
fi
|
||||
}
|
||||
|
||||
DOCKER_CMD="docker"
|
||||
|
||||
check_docker() {
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "${C_RED}Error:${RESET} Docker is not installed or not in PATH"
|
||||
@@ -207,12 +209,22 @@ check_docker() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! docker info &> /dev/null; then
|
||||
echo "${C_RED}Error:${RESET} Docker daemon is not running"
|
||||
echo "Please start Docker and try again"
|
||||
return 1
|
||||
if ! docker info &> /dev/null 2>&1; then
|
||||
if sg docker -c "docker info" &> /dev/null 2>&1; then
|
||||
DOCKER_CMD="sg docker -c"
|
||||
else
|
||||
echo "${C_RED}Error:${RESET} Docker daemon is not running or not accessible"
|
||||
echo ""
|
||||
echo "To fix, run:"
|
||||
echo " sudo usermod -aG docker \$USER"
|
||||
echo ""
|
||||
echo "Then either log out and back in, or run:"
|
||||
echo " newgrp docker"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
export DOCKER_CMD
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -291,7 +303,11 @@ check_running_containers() {
|
||||
local running_containers=""
|
||||
|
||||
# Get list of running automaker containers
|
||||
running_containers=$(docker ps --filter "name=automaker-dev" --format "{{.Names}}" 2>/dev/null | tr '\n' ' ')
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
running_containers=$(sg docker -c "docker ps --filter 'name=automaker-dev' --format '{{{{Names}}}}'" 2>/dev/null | tr '\n' ' ' || true)
|
||||
else
|
||||
running_containers=$($DOCKER_CMD ps --filter "name=automaker-dev" --format "{{.Names}}" 2>/dev/null | tr '\n' ' ' || true)
|
||||
fi
|
||||
|
||||
if [ -n "$running_containers" ] && [ "$running_containers" != " " ]; then
|
||||
get_term_size
|
||||
@@ -319,9 +335,13 @@ check_running_containers() {
|
||||
[sS]|[sS][tT][oO][pP])
|
||||
echo ""
|
||||
center_print "Stopping existing containers..." "$C_YELLOW"
|
||||
docker compose -f "$compose_file" down 2>/dev/null || true
|
||||
# Also try stopping any orphaned containers
|
||||
docker ps --filter "name=automaker-dev" -q 2>/dev/null | xargs -r docker stop 2>/dev/null || true
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
sg docker -c "docker compose -f '$compose_file' down" 2>/dev/null || true
|
||||
sg docker -c "docker ps --filter 'name=automaker-dev' -q" 2>/dev/null | xargs -r sg docker -c "docker stop" 2>/dev/null || true
|
||||
else
|
||||
$DOCKER_CMD compose -f "$compose_file" down 2>/dev/null || true
|
||||
$DOCKER_CMD ps --filter "name=automaker-dev" -q 2>/dev/null | xargs -r $DOCKER_CMD stop 2>/dev/null || true
|
||||
fi
|
||||
center_print "✓ Containers stopped" "$C_GREEN"
|
||||
echo ""
|
||||
return 0 # Continue with fresh start
|
||||
@@ -329,7 +349,11 @@ check_running_containers() {
|
||||
[rR]|[rR][eE][sS][tT][aA][rR][tT])
|
||||
echo ""
|
||||
center_print "Stopping and rebuilding containers..." "$C_YELLOW"
|
||||
docker compose -f "$compose_file" down 2>/dev/null || true
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
sg docker -c "docker compose -f '$compose_file' down" 2>/dev/null || true
|
||||
else
|
||||
$DOCKER_CMD compose -f "$compose_file" down 2>/dev/null || true
|
||||
fi
|
||||
center_print "✓ Ready to rebuild" "$C_GREEN"
|
||||
echo ""
|
||||
return 0 # Continue with rebuild
|
||||
@@ -1170,10 +1194,18 @@ case $MODE in
|
||||
center_print "API: http://localhost:$DEFAULT_SERVER_PORT" "$C_GREEN"
|
||||
center_print "Press Ctrl+C to detach" "$C_MUTE"
|
||||
echo ""
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
docker compose -f docker-compose.dev.yml -f docker-compose.override.yml logs -f
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
sg docker -c "docker compose -f 'docker-compose.dev.yml' -f 'docker-compose.override.yml' logs -f"
|
||||
else
|
||||
sg docker -c "docker compose -f 'docker-compose.dev.yml' logs -f"
|
||||
fi
|
||||
else
|
||||
docker compose -f docker-compose.dev.yml logs -f
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
$DOCKER_CMD compose -f docker-compose.dev.yml -f docker-compose.override.yml logs -f
|
||||
else
|
||||
$DOCKER_CMD compose -f docker-compose.dev.yml logs -f
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
@@ -1192,10 +1224,18 @@ case $MODE in
|
||||
echo ""
|
||||
center_print "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" "$C_GRAY"
|
||||
echo ""
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
docker compose -f docker-compose.dev.yml -f docker-compose.override.yml up --build
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
sg docker -c "docker compose -f 'docker-compose.dev.yml' -f 'docker-compose.override.yml' up --build"
|
||||
else
|
||||
sg docker -c "docker compose -f 'docker-compose.dev.yml' up --build"
|
||||
fi
|
||||
else
|
||||
docker compose -f docker-compose.dev.yml up --build
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
$DOCKER_CMD compose -f docker-compose.dev.yml -f docker-compose.override.yml up --build
|
||||
else
|
||||
$DOCKER_CMD compose -f docker-compose.dev.yml up --build
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
@@ -1235,10 +1275,18 @@ case $MODE in
|
||||
else
|
||||
center_print "Starting Docker server container..." "$C_MUTE"
|
||||
echo ""
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
docker compose -f docker-compose.dev-server.yml -f docker-compose.override.yml up --build &
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
sg docker -c "docker compose -f 'docker-compose.dev-server.yml' -f 'docker-compose.override.yml' up --build" &
|
||||
else
|
||||
sg docker -c "docker compose -f 'docker-compose.dev-server.yml' up --build" &
|
||||
fi
|
||||
else
|
||||
docker compose -f docker-compose.dev-server.yml up --build &
|
||||
if [ -f "docker-compose.override.yml" ]; then
|
||||
$DOCKER_CMD compose -f docker-compose.dev-server.yml -f docker-compose.override.yml up --build &
|
||||
else
|
||||
$DOCKER_CMD compose -f docker-compose.dev-server.yml up --build &
|
||||
fi
|
||||
fi
|
||||
DOCKER_PID=$!
|
||||
fi
|
||||
@@ -1284,7 +1332,11 @@ case $MODE in
|
||||
echo ""
|
||||
center_print "Shutting down Docker container..." "$C_MUTE"
|
||||
[ -n "$DOCKER_PID" ] && kill $DOCKER_PID 2>/dev/null || true
|
||||
docker compose -f docker-compose.dev-server.yml down 2>/dev/null || true
|
||||
if [ "$DOCKER_CMD" = "sg docker -c" ]; then
|
||||
sg docker -c "docker compose -f 'docker-compose.dev-server.yml' down" 2>/dev/null || true
|
||||
else
|
||||
$DOCKER_CMD compose -f docker-compose.dev-server.yml down 2>/dev/null || true
|
||||
fi
|
||||
center_print "Done!" "$C_GREEN"
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user