diff --git a/docker/Dockerfile.svg b/docker/Dockerfile.svg index a9465e1a552..bbbb9a89d74 100644 --- a/docker/Dockerfile.svg +++ b/docker/Dockerfile.svg @@ -1,47 +1,47 @@ - - - + + G - + cluster_legend - + key - FROM ... - COPY --from=...  - RUN --mount=(.*)from=...  + FROM ... + COPY --from=...  + RUN --mount=(.*)from=...  key2 - - - + + + key:e->key2:w - - + + key:e->key2:w - - + + key:e->key2:w - - + + @@ -50,9 +50,9 @@ fill="none" stroke="#333333" stroke-dasharray="5,2" - d="M161,-306C161,-306 41,-306 41,-306 35,-306 29,-300 29,-294 29,-294 29,-282 29,-282 29,-276 35,-270 41,-270 41,-270 161,-270 161,-270 167,-270 173,-276 173,-282 173,-282 173,-294 173,-294 173,-300 167,-306 161,-306" + d="M161,-632.44C161,-632.44 41,-632.44 41,-632.44 35,-632.44 29,-626.44 29,-620.44 29,-620.44 29,-608.44 29,-608.44 29,-602.44 35,-596.44 41,-596.44 41,-596.44 161,-596.44 161,-596.44 167,-596.44 173,-602.44 173,-608.44 173,-608.44 173,-620.44 173,-620.44 173,-626.44 167,-632.44 161,-632.44" /> - $BASE_IMAGE + $BASE_IMAGE @@ -60,633 +60,671 @@ - base + rosdep-depend external_image_0->stage_0 - - + + - + - stage_2 + stage_1 - rosdep-depend + rosdep-universe-visualization-depend - + - external_image_0->stage_2 - - + stage_0->stage_1 + + - + - stage_1 + stage_2 - base-cuda + rosdep-universe-sensing-perception-depend - + - stage_0->stage_1 - - + stage_0->stage_2 + + - + - stage_8 + stage_3 - core-devel + rosdep-universe-localization-mapping-depend - + - stage_0->stage_8 - - + stage_0->stage_3 + + + - + - stage_18 + stage_4 - universe-sensing-perception + rosdep-universe-planning-control-depend - + - stage_0->stage_18 - - - + stage_0->stage_4 + + - + - stage_20 + stage_5 - universe-localization-mapping + rosdep-universe-vehicle-system-depend - + - stage_0->stage_20 + stage_0->stage_5 + - + - stage_21 + stage_6 - universe-planning-control + rosdep-universe-depend - + - stage_0->stage_21 + stage_0->stage_6 + + + + + + stage_7 - + core-devel - - - stage_22 + + + stage_0->stage_7 + + + + + + stage_8 - universe-vehicle-system + universe-common-devel - - - stage_0->stage_22 - - + + + stage_0->stage_8 + + + + + + stage_15 + + universe-visualization-devel + + + + stage_1->stage_15 + + - + stage_23 - universe + universe-visualization - - - stage_0->stage_23 - - - - - - - stage_2->stage_8 - - + + + stage_1->stage_23 + - + - stage_3 + stage_10 - rosdep-universe-sensing-perception-depend + universe-sensing-perception-devel - - - stage_2->stage_3 - - + + + stage_2->stage_10 + + - + - stage_4 + stage_11 - rosdep-universe-localization-mapping-depend + universe-sensing-perception-devel-cuda - - - stage_2->stage_4 - - + + + stage_2->stage_11 + + + - + - stage_5 + stage_18 - rosdep-universe-planning-control-depend + universe-sensing-perception - - - stage_2->stage_5 - - + + + stage_2->stage_18 + + - + - stage_6 + stage_19 - rosdep-universe-vehicle-system-depend + universe-sensing-perception-cuda - - - stage_2->stage_6 - - + + + stage_2->stage_19 + + - + - stage_7 + stage_12 - rosdep-universe-depend + universe-localization-mapping-devel - - - stage_2->stage_7 - - - + + + stage_3->stage_12 + + - + - stage_9 + stage_20 - universe-common-devel + universe-localization-mapping - - - stage_2->stage_9 - - + + + stage_3->stage_20 + + - - - stage_19 + + + stage_13 - universe-sensing-perception-cuda + universe-planning-control-devel - - - stage_1->stage_19 - - + + + stage_4->stage_13 + + - - - stage_24 + + + stage_21 - universe-cuda - - - - stage_1->stage_24 - - - - - - stage_8->stage_9 - - - - - - stage_3->stage_18 - - + universe-planning-control - - - stage_3->stage_19 - - + + + stage_4->stage_21 + + - - - stage_11 + + + stage_14 - universe-sensing-perception-devel + universe-vehicle-system-devel - - - stage_3->stage_11 - - + + + stage_5->stage_14 + + - - - stage_12 + + + stage_22 - universe-sensing-perception-devel-cuda + universe-vehicle-system - - - stage_3->stage_12 + + + stage_5->stage_22 + + + + + + stage_16 - - + universe-devel - + - stage_4->stage_20 - + stage_6->stage_16 - + - - - stage_13 + + + stage_17 - universe-localization-mapping-devel + universe-devel-cuda - - - stage_4->stage_13 - - + + + stage_6->stage_17 + + - - - stage_5->stage_21 - - - - - - stage_14 + + + stage_24 - universe-planning-control-devel + universe - - - stage_5->stage_14 - - + + + stage_6->stage_24 + + + - - - stage_6->stage_22 - - - + + + stage_25 + + universe-cuda - - - stage_15 + + + stage_6->stage_25 - universe-vehicle-system-devel - - - stage_6->stage_15 - - + + + stage_7->stage_8 + + - + - stage_7->stage_23 - - + stage_8->stage_15 + + + + + + stage_8->stage_10 + + + + + + stage_8->stage_12 + + + + + + stage_8->stage_13 + + + + + + stage_8->stage_14 + + - + - stage_7->stage_24 - - - + stage_8->stage_16 + + - - - stage_16 + + + stage_9 - universe-devel + universe-common-devel-cuda - - - stage_7->stage_16 - - + + + stage_8->stage_9 + + - - - stage_17 + + + stage_15->stage_23 - universe-devel-cuda + - - - stage_7->stage_17 - - + + + stage_15->stage_16 + + - + - stage_9->stage_11 - - + stage_10->stage_11 + + - - - stage_9->stage_13 - - - - + - stage_9->stage_14 - - + stage_10->stage_18 + + - - - stage_9->stage_15 - - + + + stage_10->stage_16 + + - + - stage_9->stage_16 - - + stage_11->stage_19 + + - - - stage_10 - - universe-common-devel-cuda + + + stage_11->stage_17 + + - - - stage_9->stage_10 - - + + + stage_12->stage_20 + + - - - stage_11->stage_18 - - + + + stage_12->stage_16 + + + + + + stage_13->stage_21 + + - + - stage_11->stage_12 - - + stage_13->stage_16 + + - - - stage_11->stage_16 + + + stage_14->stage_22 + + + + + + stage_14->stage_16 - + - - - stage_12->stage_19 - - + + + stage_16->stage_17 + + - - - stage_12->stage_17 - - + + + stage_16->stage_24 + + - - - stage_13->stage_20 - - + + + stage_17->stage_25 + + - - - stage_13->stage_16 + + + external_image_1 - + $AUTOWARE_BASE_IMAGE - - - stage_14->stage_21 + + + external_image_1->stage_7 + + + + + + external_image_1->stage_23 - + + - - - stage_14->stage_16 - - + + + external_image_1->stage_18 + + - - - stage_15->stage_22 - - + + + external_image_1->stage_20 + + + + + + external_image_1->stage_21 + + + + + + external_image_1->stage_22 + + + + + + external_image_1->stage_24 + + + + + - - - stage_15->stage_16 + + + stage_9->stage_11 + + + + + + stage_9->stage_17 + + + + + + external_image_2 - - - - - stage_16->stage_23 - - + $AUTOWARE_BASE_CUDA_IMAGE - - - stage_16->stage_17 - - - - - - stage_17->stage_24 - - - - - - stage_10->stage_12 - - + + + external_image_2->stage_19 + + - - - stage_10->stage_17 - - + + + external_image_2->stage_25 + + + diff --git a/docker/README.md b/docker/README.md index c5bdf3a7fca..1d6d96b8789 100644 --- a/docker/README.md +++ b/docker/README.md @@ -68,6 +68,8 @@ ros2 launch autoware_pointcloud_preprocessor preprocessor.launch.xml ## Multi-stage Dockerfile structure + + ![](./Dockerfile.svg) The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [development container](https://containers.dev). On the other hand, those without the `-devel` suffix (e.g. `universe`) are intended to be used as a runtime container. @@ -76,13 +78,13 @@ The suffix `-devel` (e.g. `universe-devel`) is intended for use as a [developmen This is a base image of this Dockerfile. [`ros:humble-ros-base-jammy`](https://hub.docker.com/_/ros/tags?page=&page_size=&ordering=&name=humble-ros-base-jammy) will be given. -### `base` (from Dockerfile.base) +### `$AUTOWARE_BASE_IMAGE` (from Dockerfile.base) This stage performs only the basic setup required for all Autoware images. -### `base-cuda` (from Dockerfile.base) +### `$AUTOWARE_BASE_CUDA_IMAGE` (from Dockerfile.base) -This stage is built on top of `base` and adds the CUDA runtime environment and artifacts. +This stage is built on top of `$AUTOWARE_BASE_IMAGE` and adds the CUDA runtime environment and artifacts. ### `rosdep-depend` @@ -111,7 +113,7 @@ This stage installs the dependency packages based on `/rosdep-universe-common-de ### `universe-common-devel-cuda` -This stage is build on top of `universe-common-devel` and installs the CUDA development environment. +This stage is built on top of `universe-common-devel` and installs the CUDA development environment. ### `universe-sensing-perception-devel` @@ -135,6 +137,10 @@ This stage is an Autoware Universe Sensing/Perception runtime container. It only This stage installs the CUDA runtime environment and copies the binaries built in the `universe-sensing-perception-devel-cuda` stage. +### `universe-visualization-devel` + +This stage installs the dependency packages based on `/rosdep-universe-visualization-depend-packages.txt` and builds the visualization packages. + ### `universe-visualization` This stage is a Autoware Universe Visualization runtime container. It only includes the dependencies given by `/rosdep-universe-visualization-exec-depend-packages.txt` and the binaries built in the `universe-visualization-devel` stage. @@ -180,6 +186,7 @@ This stage installs the dependency packages based on `/rosdep-universe-depend-pa - `universe-localization-mapping-devel` - `universe-planning-control-devel` - `universe-vehicle-system-devel` +- `universe-visualization-devel` Then it builds the remaining packages of `autoware.repos`: @@ -191,7 +198,6 @@ Then it builds the remaining packages of `autoware.repos`: - `universe/autoware.universe/launch` - `universe/autoware.universe/simulator` - `universe/autoware.universe/tools` -- `universe/autoware.universe/visualization` - `vehicle` This stage provides an all-in-one development container to Autoware developers. By running the host's source code with volume mounting, it allows for easy building and debugging of Autoware.