From e6aa63af1477b08ab88ccc4a141a6ad0f16845e2 Mon Sep 17 00:00:00 2001 From: Harsh Davda Date: Fri, 21 Feb 2025 05:49:33 +0530 Subject: [PATCH 1/3] mount assets server only --- scripts/ras_docker/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ras_docker/app.py b/scripts/ras_docker/app.py index ef13632..d80c5f1 100644 --- a/scripts/ras_docker/app.py +++ b/scripts/ras_docker/app.py @@ -75,8 +75,8 @@ def get_app_spacific_docker_cmd(args : argparse.Namespace,docker_cmd_fmt_src,rem exit(1) if remove_cn: extra_docker_args += " --rm " - # if app_conf.app_name == "ras_server_app": - extra_docker_args += f" -v {asset_dir}:/{app_conf.app_name}/ros2_ws/src/assets " + if app_conf.app_name == "ras_server_app": + extra_docker_args += f" -v {asset_dir}:/{app_conf.app_name}/ros2_ws/src/assets " docker_cmd_fmt_local = partial(docker_cmd_fmt_src, display_env=f"{get_display_var()}", app_dir=str(app_path), From 2c20a2055de9547183c3033807e1fb55d784bccc Mon Sep 17 00:00:00 2001 From: jayanth100798 Date: Fri, 4 Apr 2025 14:20:29 +0530 Subject: [PATCH 2/3] real_sense_fix and commented forcePull/Prebuilt --- context/apps/Dockerfile.robot | 2 +- scripts/ras_docker/app.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/context/apps/Dockerfile.robot b/context/apps/Dockerfile.robot index 87c624e..dec544b 100644 --- a/context/apps/Dockerfile.robot +++ b/context/apps/Dockerfile.robot @@ -13,7 +13,7 @@ RUN mkdir -p /ras_robot_app RUN apt update && apt install -y inetutils-ping RUN apt install wget unzip -y RUN pip install xArm-Python-SDK - +RUN apt install -y ros-humble-realsense2-camera USER ras RUN python3 -m pip install flask pyftpdlib paho-mqtt opencv-contrib-python==4.7.0.72 numpy==1.21.5 USER root diff --git a/scripts/ras_docker/app.py b/scripts/ras_docker/app.py index 8c36b4f..d5adab1 100644 --- a/scripts/ras_docker/app.py +++ b/scripts/ras_docker/app.py @@ -43,9 +43,9 @@ def init_app(args: argparse.Namespace): # if(vcs_fetch_repos(repos_file,apps_path,pull=True)): # dep_repos_file = app_path/"deps.repos" # vcs_fetch_repos(dep_repos_file,app_path,pull=True) - force_pull = (hasattr(args,"image_pull") and args.image_pull) - pull_from_docker_repo("ras_base",force_pull) - pull_from_docker_repo(app_name,force_pull) + # force_pull = (hasattr(args,"image_pull") and args.image_pull) + # pull_from_docker_repo("ras_base",force_pull) + # pull_from_docker_repo(app_name,force_pull) @dataclass From 80db7619c613c186a9cb8c340ea2a91dda2f4d93 Mon Sep 17 00:00:00 2001 From: jayanth100798 Date: Mon, 7 Apr 2025 17:35:13 +0530 Subject: [PATCH 3/3] updated app.py function to mount/unmout based on app name --- scripts/ras_docker/app.py | 66 ++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/scripts/ras_docker/app.py b/scripts/ras_docker/app.py index d5adab1..4b90177 100644 --- a/scripts/ras_docker/app.py +++ b/scripts/ras_docker/app.py @@ -64,33 +64,75 @@ def __post_init__(self,app_ns:str): -def get_app_spacific_docker_cmd(args : argparse.Namespace,docker_cmd_fmt_src,remove_cn=True,extra_docker_args = ""): +# def get_app_spacific_docker_cmd(args : argparse.Namespace,docker_cmd_fmt_src,remove_cn=True,extra_docker_args = ""): +# app_conf = AppCoreConf(args.app) +# app_path = WORKING_PATH/'apps'/app_conf.app_name +# config_dir=str(WORKING_PATH/'configs') +# asset_dir=str(WORKING_PATH/'assets') +# if not app_path.exists(): +# print(f"Error: {app_path} does not exist") +# print(f"Please run the init command first") +# exit(1) +# if remove_cn: +# extra_docker_args += " --rm " +# # if app_conf.app_name == "ras_server_app": +# extra_docker_args += f" -v {asset_dir}:/{app_conf.app_name}/ros2_ws/src/assets " +# docker_cmd_fmt_local = partial(docker_cmd_fmt_src, +# display_env=f"{get_display_var()}", +# app_dir=str(app_path), +# work_dir="/"+app_conf.app_name, +# extra_docker_args=f"-v {config_dir}:/{app_conf.app_name}/configs {extra_docker_args}" +# ) +# allow_login = args.command in ["dev","run"] +# docker_cmd_fmt_new = regen_docker_fmt(docker_cmd_fmt_local,app_conf,allow_login=allow_login) +# if isinstance(docker_cmd_fmt_new,type(None)): +# print("Already Running") +# exit(1) +# return docker_cmd_fmt_new + +def get_app_spacific_docker_cmd(args: argparse.Namespace, docker_cmd_fmt_src, remove_cn=True, extra_docker_args=""): app_conf = AppCoreConf(args.app) - app_path = WORKING_PATH/'apps'/app_conf.app_name - config_dir=str(WORKING_PATH/'configs') - asset_dir=str(WORKING_PATH/'assets') + app_path = WORKING_PATH / 'apps' / app_conf.app_name + config_dir = str(WORKING_PATH / 'configs') + asset_dir = str(WORKING_PATH / 'assets') + if not app_path.exists(): print(f"Error: {app_path} does not exist") print(f"Please run the init command first") exit(1) + + # Freshly construct docker args for this app + docker_args = "" if remove_cn: - extra_docker_args += " --rm " + docker_args += " --rm " + + # Only mount assets if this is the server app if app_conf.app_name == "ras_server_app": - extra_docker_args += f" -v {asset_dir}:/{app_conf.app_name}/ros2_ws/src/assets " - docker_cmd_fmt_local = partial(docker_cmd_fmt_src, + docker_args += f" -v {asset_dir}:/{app_conf.app_name}/ros2_ws/src/assets " + + # Always mount the config directory + docker_args = f"-v {config_dir}:/{app_conf.app_name}/configs {docker_args}" + + docker_cmd_fmt_local = partial( + docker_cmd_fmt_src, display_env=f"{get_display_var()}", app_dir=str(app_path), - work_dir="/"+app_conf.app_name, - extra_docker_args=f"-v {config_dir}:/{app_conf.app_name}/configs {extra_docker_args}" + work_dir="/" + app_conf.app_name, + extra_docker_args=docker_args ) - allow_login = args.command in ["dev","run"] - docker_cmd_fmt_new = regen_docker_fmt(docker_cmd_fmt_local,app_conf,allow_login=allow_login) - if isinstance(docker_cmd_fmt_new,type(None)): + + allow_login = args.command in ["dev", "run"] + docker_cmd_fmt_new = regen_docker_fmt(docker_cmd_fmt_local, app_conf, allow_login=allow_login) + + if docker_cmd_fmt_new is None: print("Already Running") exit(1) + return docker_cmd_fmt_new + + def build_image_app(args : argparse.Namespace): force_option = False