61 lines
2.1 KiB
Docker
61 lines
2.1 KiB
Docker
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# NVIDIA CORPORATION and its licensors retain all intellectual property
|
|
# and proprietary rights in and to this software, related documentation
|
|
# and any modifications thereto. Any use, reproduction, disclosure or
|
|
# distribution of this software and related documentation without an express
|
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
|
|
ARG BASE_IMAGE
|
|
FROM ${BASE_IMAGE}
|
|
|
|
# Setup non-root admin user
|
|
ARG USERNAME=admin
|
|
ARG USER_UID=1000
|
|
ARG USER_GID=1000
|
|
|
|
# Install prerequisites
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
sudo \
|
|
udev
|
|
|
|
# Reuse triton-server user as 'admin' user if exists
|
|
RUN if [ $(getent group triton-server) ]; then \
|
|
groupmod -o --gid ${USER_GID} -n ${USERNAME} triton-server ; \
|
|
usermod -l ${USERNAME} -u ${USER_UID} -m -d /home/${USERNAME} triton-server ; \
|
|
mkdir -p /home/${USERNAME} ; \
|
|
sudo chown ${USERNAME}:${USERNAME} /home/${USERNAME} ; \
|
|
# Wipe files that may create issues for users with large uid numbers.
|
|
rm -f /var/log/lastlog /var/log/faillog ; \
|
|
fi
|
|
|
|
# Create the 'admin' user if not already exists
|
|
RUN if [ ! $(getent passwd ${USERNAME}) ]; then \
|
|
groupadd --gid ${USER_GID} ${USERNAME} ; \
|
|
useradd --no-log-init --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} ; \
|
|
fi
|
|
|
|
# Update 'admin' user
|
|
RUN echo ${USERNAME} ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/${USERNAME} \
|
|
&& chmod 0440 /etc/sudoers.d/${USERNAME} \
|
|
&& adduser ${USERNAME} video && adduser ${USERNAME} plugdev && adduser ${USERNAME} sudo
|
|
|
|
# Copy scripts
|
|
RUN mkdir -p /usr/local/bin/scripts
|
|
COPY scripts/*entrypoint.sh /usr/local/bin/scripts/
|
|
RUN chmod +x /usr/local/bin/scripts/*.sh
|
|
|
|
# Copy middleware profiles
|
|
RUN mkdir -p /usr/local/share/middleware_profiles
|
|
COPY middleware_profiles/*profile.xml /usr/local/share/middleware_profiles/
|
|
|
|
ENV USERNAME=${USERNAME}
|
|
ENV USER_GID=${USER_GID}
|
|
ENV USER_UID=${USER_UID}
|
|
|
|
# Switch to non-root user and return to root
|
|
USER ${USERNAME}
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
rosdep update
|
|
USER root |