Go2Py/docker/Dockerfile.user

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