mirror of
https://github.com/katanemo/plano.git
synced 2026-06-26 15:39:40 +02:00
use per user docker socket if system docker socket doesn't exist (#361)
* use per user docker socket if system docker socket doesn't exist * add retry
This commit is contained in:
parent
aa11113cea
commit
dae6239b81
2 changed files with 34 additions and 4 deletions
|
|
@ -4,7 +4,8 @@ import time
|
||||||
import sys
|
import sys
|
||||||
import glob
|
import glob
|
||||||
import docker
|
import docker
|
||||||
from cli.utils import getLogger
|
from docker.errors import DockerException
|
||||||
|
from cli.utils import getLogger, update_docker_host_env
|
||||||
from cli.consts import (
|
from cli.consts import (
|
||||||
ARCHGW_DOCKER_IMAGE,
|
ARCHGW_DOCKER_IMAGE,
|
||||||
ARCHGW_DOCKER_NAME,
|
ARCHGW_DOCKER_NAME,
|
||||||
|
|
@ -110,7 +111,12 @@ def start_arch(arch_config_file, env, log_timeout=120, foreground=False):
|
||||||
log.info("Starting arch gateway")
|
log.info("Starting arch gateway")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = docker.from_env()
|
try:
|
||||||
|
client = docker.from_env()
|
||||||
|
except DockerException as e:
|
||||||
|
# try setting up the docker host environment variable and retry
|
||||||
|
update_docker_host_env()
|
||||||
|
client = docker.from_env()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
container = client.containers.get("archgw")
|
container = client.containers.get("archgw")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
|
import os
|
||||||
import yaml
|
import yaml
|
||||||
import logging
|
import logging
|
||||||
import docker
|
import docker
|
||||||
|
from docker.errors import DockerException
|
||||||
|
|
||||||
from cli.consts import ARCHGW_DOCKER_IMAGE, ARCHGW_DOCKER_NAME
|
from cli.consts import ARCHGW_DOCKER_IMAGE, ARCHGW_DOCKER_NAME
|
||||||
|
|
||||||
|
|
@ -19,10 +21,32 @@ def getLogger(name="cli"):
|
||||||
log = getLogger(__name__)
|
log = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def update_docker_host_env():
|
||||||
|
"""
|
||||||
|
Update DOCKER_HOST environment variable to use the local Docker socket
|
||||||
|
"""
|
||||||
|
if os.getenv("DOCKER_HOST"):
|
||||||
|
return
|
||||||
|
|
||||||
|
default_docker_socket = os.getenv("DEFAULT_DOCKER_SOCKET", "/var/run/docker.sock")
|
||||||
|
if not os.path.exists(default_docker_socket):
|
||||||
|
home_dir = os.getenv("HOME")
|
||||||
|
docker_host = f"unix://{home_dir}/.docker/run/docker.sock"
|
||||||
|
log.info(
|
||||||
|
f"Default docker socket {default_docker_socket} not found, using {docker_host}"
|
||||||
|
)
|
||||||
|
os.environ["DOCKER_HOST"] = docker_host
|
||||||
|
|
||||||
|
|
||||||
def validate_schema(arch_config_file: str) -> None:
|
def validate_schema(arch_config_file: str) -> None:
|
||||||
try:
|
try:
|
||||||
client = docker.from_env()
|
try:
|
||||||
# Run the container with detach=True to avoid blocking main process
|
client = docker.from_env()
|
||||||
|
except DockerException as e:
|
||||||
|
# try setting up the docker host environment variable and retry
|
||||||
|
update_docker_host_env()
|
||||||
|
client = docker.from_env()
|
||||||
|
|
||||||
container = client.containers.run(
|
container = client.containers.run(
|
||||||
image=ARCHGW_DOCKER_IMAGE,
|
image=ARCHGW_DOCKER_IMAGE,
|
||||||
volumes={
|
volumes={
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue