Replies: 5 comments 11 replies
-
I strongly agree with you. I generally agree with the multi-stage build architecture, but I think there is a problem that modifying packages which was included in the To improve the development experience, I think it is important for devel containers to cache apt/pypi packages and compile results using ccache, etc. |
Beta Was this translation helpful? Give feedback.
-
@youtalk I have a similar view explained in this reply. This direction is excellent and applicable, but package developers and maintainers must address several points before containerization for successful implementation.
|
Beta Was this translation helpful? Give feedback.
-
Thank you for this great discussion @youtalk, I have created this recent discussion and PR for some initial modular containers ( |
Beta Was this translation helpful? Give feedback.
-
The CI acceleration of the The first one represents the current state. In the first step, the In the second step, the In the final step, the |
Beta Was this translation helpful? Give feedback.
-
To simplify the launch of multi-containers, I will begin the process of placing the launch packages for each component in the autoware.universe/launch directory into their respective component containers. |
Beta Was this translation helpful? Give feedback.
-
The only final artifacts in the current Dockerfile are a
devel
image for the development container and aruntime
image for the execution container.https://github.com/autowarefoundation/autoware/blob/main/docker/autoware-openadk/Dockerfile
As a result, the size of container images can easily become bloated. In addition, modifying a single source code can cause the entire build to be redone, and the caching mechanism does not work effectively.
Therefore, we propose to split container images.
First, create an
autoware-common
image that contains only common message definition packages and common libraries, and runcolcon build
beforehand.Inherit the
autoware-common
and create multiple container images using multi-stage build for each component of Autoware.We are planning to configure the units of components according to the Autoware architecture diagram, such as
autoware-perception
for the Perception package,autoware-planning
for the Planning package, and so on.Multi-stage builds are expected to reduce the build time of container images and improve cache efficiency. Multiple containerization also makes it much easier to coordinate the computational resources of each Autoware component.
In addition, developers of Autoware components will only need to build the development containers for their own needs.
We believe this change will also greatly improve development and operational efficiency.
This concept is in line with the Open AD Kit, which promotes containerization. We look forward to your suggestions.
Beta Was this translation helpful? Give feedback.
All reactions