|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +runtime="${DOCKER_GIT_DOCKER_RUNTIME:-isolated}" |
| 5 | +docker_host="${DOCKER_HOST:-unix:///var/run/docker.sock}" |
| 6 | +dockerd_pid="" |
| 7 | + |
| 8 | +cleanup() { |
| 9 | + if [[ -n "$dockerd_pid" ]] && kill -0 "$dockerd_pid" >/dev/null 2>&1; then |
| 10 | + kill "$dockerd_pid" >/dev/null 2>&1 || true |
| 11 | + wait "$dockerd_pid" >/dev/null 2>&1 || true |
| 12 | + fi |
| 13 | +} |
| 14 | + |
| 15 | +trap cleanup EXIT INT TERM |
| 16 | + |
| 17 | +if [[ "$runtime" == "isolated" ]]; then |
| 18 | + if [[ "$docker_host" != unix://* ]]; then |
| 19 | + echo "DOCKER_GIT_DOCKER_RUNTIME=isolated requires a unix:// DOCKER_HOST for the managed controller daemon." >&2 |
| 20 | + exit 1 |
| 21 | + fi |
| 22 | + |
| 23 | + export DOCKER_HOST="$docker_host" |
| 24 | + |
| 25 | + socket_path="${docker_host#unix://}" |
| 26 | + data_root="${DOCKER_GIT_DOCKER_DATA_ROOT:-/var/lib/docker}" |
| 27 | + log_path="${DOCKER_GIT_DOCKERD_LOG:-/var/log/docker-git/dockerd.log}" |
| 28 | + tcp_host="${DOCKER_GIT_DOCKERD_TCP_HOST:-tcp://0.0.0.0:2375}" |
| 29 | + |
| 30 | + mkdir -p "$(dirname "$socket_path")" "$data_root" "$(dirname "$log_path")" |
| 31 | + |
| 32 | + if ! docker info >/dev/null 2>&1; then |
| 33 | + # shellcheck disable=SC2086 |
| 34 | + dockerd \ |
| 35 | + --host="$docker_host" \ |
| 36 | + --host="$tcp_host" \ |
| 37 | + --tls=false \ |
| 38 | + --data-root="$data_root" \ |
| 39 | + ${DOCKER_GIT_DOCKERD_ARGS:-} \ |
| 40 | + >"$log_path" 2>&1 & |
| 41 | + dockerd_pid="$!" |
| 42 | + |
| 43 | + for _ in $(seq 1 90); do |
| 44 | + if docker info >/dev/null 2>&1; then |
| 45 | + break |
| 46 | + fi |
| 47 | + if ! kill -0 "$dockerd_pid" >/dev/null 2>&1; then |
| 48 | + echo "Managed Docker daemon exited during startup." >&2 |
| 49 | + tail -n 200 "$log_path" >&2 || true |
| 50 | + exit 1 |
| 51 | + fi |
| 52 | + sleep 1 |
| 53 | + done |
| 54 | + |
| 55 | + if ! docker info >/dev/null 2>&1; then |
| 56 | + echo "Managed Docker daemon did not become ready in time." >&2 |
| 57 | + tail -n 200 "$log_path" >&2 || true |
| 58 | + exit 1 |
| 59 | + fi |
| 60 | + fi |
| 61 | +fi |
| 62 | + |
| 63 | +bun packages/api/dist/src/main.js & |
| 64 | +api_pid="$!" |
| 65 | +wait "$api_pid" |
0 commit comments