Make default image name image_{CONTAINER_NAME}, and use debian:stable as fallback.

This commit is contained in:
Adrian Kuschelyagi Malacoda 2020-08-20 02:37:44 -05:00
parent 77935b49e8
commit d0adb3b0ed
2 changed files with 17 additions and 8 deletions

View File

@ -21,7 +21,7 @@ These are arguments that go between `otherworld` and the command.
Name to assign to container (default: `otherworld_$USER`) Name to assign to container (default: `otherworld_$USER`)
### --image=<image> ### --image=<image>
Image to create the container with (default: `debian:stable`) Image to create the container with (default: `image_$CONTAINER_NAME`, or `debian:stable` if that image does not exist)
### --sudo ### --sudo
Runs command as root, instead of current user. Runs command as root, instead of current user.

23
otherworld Normal file → Executable file
View File

@ -7,7 +7,7 @@ import sys
import json import json
CONTAINER_NAME = "otherworld" CONTAINER_NAME = "otherworld"
IMAGE_NAME = "debian:stable" DEFAULT_IMAGE_NAME = "debian:stable"
def create_x11_mapping (): def create_x11_mapping ():
home = os.environ["HOME"] home = os.environ["HOME"]
@ -110,7 +110,7 @@ def expand_user_volumes (volumes):
user = os.environ["USER"] user = os.environ["USER"]
uid = int(check_output(["id", "-u"]).strip()) uid = int(check_output(["id", "-u"]).strip())
image_name = os.environ.get("OW_IMAGE", IMAGE_NAME) image_name = os.environ.get("OW_IMAGE", None)
container_name = os.environ.get("OW_CONTAINER", f"{CONTAINER_NAME}_{user}") container_name = os.environ.get("OW_CONTAINER", f"{CONTAINER_NAME}_{user}")
build_path = None build_path = None
@ -144,9 +144,6 @@ while len(command) > 0:
elif arg.startswith("--container="): elif arg.startswith("--container="):
container_name = arg[len("--container="):] container_name = arg[len("--container="):]
command = command[1:] command = command[1:]
elif arg.startswith("--image"):
image_name = get_generated_image_name(container_name)
command = command[1:]
elif arg.startswith("--image="): elif arg.startswith("--image="):
image_name = arg[len("--image="):] image_name = arg[len("--image="):]
command = command[1:] command = command[1:]
@ -177,8 +174,20 @@ except Exception:
build_path = resolve_build_path(build_path) build_path = resolve_build_path(build_path)
if build_path is not None: if build_path is not None:
image_name = docker_build(build_path, ["--pull"] if pull else [], get_generated_image_name(container_name)) image_name = docker_build(build_path, ["--pull"] if pull else [], get_generated_image_name(container_name))
elif pull: else:
docker_pull(image_name) if image_name is None:
image_name = get_generated_image_name(container_name)
try:
docker_inspect(image_name)
if not quiet:
print(f">> Using default otherworld image {image_name}")
except Exception:
if not quiet:
print(f">> Default otherworld image {image_name} not found, falling back to {DEFAULT_IMAGE_NAME}")
image_name = DEFAULT_IMAGE_NAME
if pull:
docker_pull(image_name)
if not quiet: if not quiet:
print(f">> Creating container: {container_name} (using image: {image_name})") print(f">> Creating container: {container_name} (using image: {image_name})")