71 lines
2.1 KiB
Bash
Executable File
71 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script to configure podman for the local environment
|
|
#
|
|
# ./podman_setup
|
|
|
|
set -euo pipefail
|
|
|
|
if ! command -v podman &>/dev/null; then
|
|
echo "Error: podman is not installed"
|
|
exit 1
|
|
fi
|
|
|
|
case "$(uname -s)" in
|
|
Darwin*) memory=12288 ;;
|
|
Linux*) memory=8192 ;;
|
|
*)
|
|
echo "Unsupported platform"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [[ "$(uname -s)" == Darwin* ]]; then
|
|
helper_plist="/Library/LaunchDaemons/com.github.containers.podman.helper-$(whoami).plist"
|
|
if [[ ! -f "$helper_plist" ]]; then
|
|
echo "Installing podman-mac-helper (requires sudo)..."
|
|
sudo podman-mac-helper install
|
|
fi
|
|
fi
|
|
|
|
if ! podman machine inspect &>/dev/null; then
|
|
echo "Initializing podman machine with 4 CPUs and $((memory / 1024))GB RAM..."
|
|
podman machine init --rootful --cpus 4 --memory "$memory"
|
|
fi
|
|
|
|
if [[ "$(uname -s)" == Darwin* ]]; then
|
|
rosetta=$(podman machine inspect --format '{{.Rosetta}}')
|
|
if [[ "$rosetta" != "true" ]]; then
|
|
echo "Warning: Rosetta translation is not enabled on this podman machine."
|
|
fi
|
|
fi
|
|
|
|
state=$(podman machine inspect --format '{{.State}}')
|
|
case "$state" in
|
|
running)
|
|
echo "Podman machine is already running."
|
|
;;
|
|
stopped)
|
|
echo "Starting podman machine..."
|
|
podman machine start
|
|
;;
|
|
*)
|
|
echo "Error: podman machine is in unexpected state: $state"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$(uname -s)" in
|
|
Darwin*) resolved_ip=$(dscacheutil -q host -a name host.docker.internal 2>/dev/null | awk '/^ip_address:/{print $2; exit}') ;;
|
|
*) resolved_ip=$(getent hosts host.docker.internal 2>/dev/null | awk '{print $1}') ;;
|
|
esac
|
|
if [[ -z "$resolved_ip" ]] || ! echo "$resolved_ip" | grep -qE '^(127\.|::1$)'; then
|
|
echo "Adding host.docker.internal to /etc/hosts (requires sudo)..."
|
|
echo "127.0.0.1 host.docker.internal" | sudo tee -a /etc/hosts >/dev/null
|
|
fi
|
|
|
|
if [[ ! -e /usr/local/bin/docker ]]; then
|
|
echo "Creating docker symlink to avoid issues with projects that do not inherit aliases (requires sudo)..."
|
|
sudo ln -s "$(command -v podman)" /usr/local/bin/docker
|
|
fi
|