This repository has been archived by the owner on Dec 13, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add placeholder filer for example Dockerfile with nvidia drivers
- Loading branch information
Showing
1 changed file
with
123 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
# Docker image for extending MoveIt Pro with a custom overlay. | ||
# | ||
# Example build command (with defaults): | ||
# | ||
# docker build -f ./Dockerfile . | ||
# | ||
|
||
# Specify the MoveIt Pro release to build on top of. | ||
ARG MOVEIT_STUDIO_BASE_IMAGE | ||
ARG USERNAME=studio-user | ||
ARG USER_UID=1000 | ||
ARG USER_GID=1000 | ||
|
||
################################################## | ||
# Starting from the specified MoveIt Pro release # | ||
################################################## | ||
# The image tag is specified in the argument itself. | ||
# hadolint ignore=DL3006 | ||
FROM ${MOVEIT_STUDIO_BASE_IMAGE} AS base | ||
|
||
# Create a non-root user | ||
ARG USERNAME | ||
ARG USER_UID | ||
ARG USER_GID | ||
|
||
# Copy source code from the workspace's ROS 2 packages to a workspace inside the container | ||
ARG USER_WS=/home/${USERNAME}/user_ws | ||
ENV USER_WS=${USER_WS} | ||
RUN mkdir -p ${USER_WS}/src ${USER_WS}/build ${USER_WS}/install ${USER_WS}/log | ||
COPY ./src ${USER_WS}/src | ||
|
||
# Also mkdir with user permission directories which will be mounted later to avoid docker creating them as root | ||
WORKDIR $USER_WS | ||
# hadolint ignore=DL3008 | ||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ | ||
--mount=type=cache,target=/var/lib/apt,sharing=locked \ | ||
groupadd --gid $USER_GID ${USERNAME} && \ | ||
useradd --uid $USER_UID --gid $USER_GID --shell /bin/bash --create-home ${USERNAME} && \ | ||
apt-get update && \ | ||
apt-get install -q -y --no-install-recommends sudo && \ | ||
echo ${USERNAME} ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/${USERNAME} && \ | ||
chmod 0440 /etc/sudoers.d/${USERNAME} && \ | ||
cp -r /etc/skel/. /home/${USERNAME} && \ | ||
mkdir -p \ | ||
/home/${USERNAME}/.ccache \ | ||
/home/${USERNAME}/.config \ | ||
/home/${USERNAME}/.ignition \ | ||
/home/${USERNAME}/.colcon \ | ||
/home/${USERNAME}/.ros && \ | ||
chown -R $USER_UID:$USER_GID /home/${USERNAME} /opt/overlay_ws/ | ||
|
||
# Install Nvidia drivers for improved simulator performance. | ||
# 'nvidia-driver-555' MUST be replaced with the Nvidia driver version on your host, e.g. nvidia-driver-535, nvidia-driver-555. | ||
# Use nvidia-smi on your host to determine the driver version. | ||
ENV DEBIAN_FRONTEND=noninteractive | ||
RUN apt update && apt install -y software-properties-common | ||
RUN add-apt-repository ppa:graphics-drivers/ppa && apt update && apt upgrade -y && apt install -y nvidia-driver-555 | ||
|
||
# Install additional dependencies | ||
# You can also add any necessary apt-get install, pip install, etc. commands at this point. | ||
# NOTE: The /opt/overlay_ws folder contains MoveIt Pro binary packages and the source file. | ||
# hadolint ignore=SC1091 | ||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ | ||
--mount=type=cache,target=/var/lib/apt,sharing=locked \ | ||
. /opt/overlay_ws/install/setup.sh && \ | ||
apt-get update && \ | ||
rosdep install -q -y \ | ||
--from-paths src \ | ||
--ignore-src | ||
|
||
# Set up colcon defaults for the new user | ||
USER ${USERNAME} | ||
RUN colcon mixin add default \ | ||
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml && \ | ||
colcon mixin update && \ | ||
colcon metadata add default \ | ||
https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \ | ||
colcon metadata update | ||
COPY colcon-defaults.yaml /home/${USERNAME}/.colcon/defaults.yaml | ||
|
||
# hadolint ignore=DL3002 | ||
USER root | ||
|
||
################################################################### | ||
# Target for the developer build which does not compile any code. # | ||
################################################################### | ||
FROM base AS user-overlay-dev | ||
|
||
ARG USERNAME | ||
ARG USER_WS=/home/${USERNAME}/user_ws | ||
ENV USER_WS=${USER_WS} | ||
|
||
# Install any additional packages for development work | ||
# hadolint ignore=DL3008 | ||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ | ||
--mount=type=cache,target=/var/lib/apt,sharing=locked \ | ||
apt-get update && \ | ||
apt-get install -y --no-install-recommends \ | ||
less \ | ||
gdb \ | ||
nano | ||
|
||
# Set up the user's .bashrc file and shell. | ||
CMD ["/usr/bin/bash"] | ||
|
||
######################################### | ||
# Target for compiled, deployable image # | ||
######################################### | ||
FROM base AS user-overlay | ||
|
||
ARG USERNAME | ||
ARG USER_WS=/home/${USERNAME}/user_ws | ||
ENV USER_WS=${USER_WS} | ||
|
||
# Compile the workspace | ||
WORKDIR $USER_WS | ||
# hadolint ignore=SC1091 | ||
RUN --mount=type=cache,target=/home/${USERNAME}/.ccache \ | ||
. /opt/overlay_ws/install/setup.sh && \ | ||
colcon build | ||
|
||
# Set up the user's .bashrc file and shell. | ||
CMD ["/usr/bin/bash"] |