Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
Development_Environment
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Montaño Sarria, Andres Felipe
Development_Environment
Commits
eb5483d4
Commit
eb5483d4
authored
5 months ago
by
Montaño Sarria, Andres Felipe
Browse files
Options
Downloads
Patches
Plain Diff
Update Dorcker file to support image base and extended
parent
09b7ece7
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
dockerfiles/devenv.Dockerfile
+92
-92
92 additions, 92 deletions
dockerfiles/devenv.Dockerfile
with
92 additions
and
92 deletions
dockerfiles/devenv.Dockerfile
+
92
−
92
View file @
eb5483d4
# ***********************************************************
# * DEVENV Base Image for ROS *
# ***********************************************************
ARG
ROS_DISTRO
ARG
ROS_DISTRO
FROM
osrf/ros:${ROS_DISTRO}-desktop-full
FROM
osrf/ros:${ROS_DISTRO}-desktop-full
as
devenv
ENV
ROS_DISTRO "${ROS_DISTRO}"
ENV
ROS_DISTRO "${ROS_DISTRO}"
ARG
EXT_SHELL=bash
ARG
EXT_SHELL=bash
ENV
EXT_SHELL "${EXT_SHELL}"
ENV
SHELL="/bin/${SHELL}"
RUN
echo
"Building devenv for ROS"
$ROS_DISTRO
"with shell"
$EXT_SHELL
RUN
echo
"Building devenv for ROS"
$ROS_DISTRO
"with shell"
$EXT_SHELL
# Avoid warnings by switching to noninteractive
# Avoid warnings by switching to noninteractive
ENV
DEBIAN_FRONTEND=noninteractive
ENV
DEBIAN_FRONTEND=noninteractive
# Import the key in order to be able to use the packages from the repository
# Import the key in order to be able to use the packages from the repository
# RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7E72C5B4111A50084C63C9489E7A9B1D990CF897
# NOV - 2023
# NOV - 2023
RUN
apt-key adv
--keyserver
hkp://keyserver.ubuntu.com:80
--recv-keys
4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
#
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
# Setup environment
# Setup environment
RUN
apt-get update
&&
apt-get
install
-y
apt-utils
RUN
apt-get update
&&
apt-get
install
-y
apt-utils
# Setup locales
RUN
apt-get
install
-y
\
RUN
apt-get
install
-y
\
locales
\
locales
\
&&
sed
-i
'/en_US.UTF-8/s/^# //g'
/etc/locale.gen
&&
locale-gen en_US.UTF-8
&&
sed
-i
'/en_US.UTF-8/s/^# //g'
/etc/locale.gen
&&
locale-gen en_US.UTF-8
...
@@ -59,7 +65,7 @@ RUN apt-get update && \
...
@@ -59,7 +65,7 @@ RUN apt-get update && \
# Install zsh if requested
# Install zsh if requested
RUN if
[
"
$EXT_SHELL
"
=
"zsh"
]
;
\
RUN if
[
"
$EXT_SHELL
"
=
"zsh"
]
;
\
then
\
then
\
apt-get
-y
install
zsh
;
\
apt-get
-y
install
zsh
;
\
fi
fi
# Configure system to look for debian packages in the Tecnalia's artifactory repository
# Configure system to look for debian packages in the Tecnalia's artifactory repository
...
@@ -70,12 +76,6 @@ RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt
...
@@ -70,12 +76,6 @@ RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt
RUN
sh
-c
"echo 'yaml https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/rosdistro/rosdep_tecnalia.yaml'
\
RUN
sh
-c
"echo 'yaml https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/rosdistro/rosdep_tecnalia.yaml'
\
>> /etc/ros/rosdep/sources.list.d/20-default.list"
>> /etc/ros/rosdep/sources.list.d/20-default.list"
# Create a virtual environment
# RUN apt-get install -y python3-venv
# ENV VIRTUAL_ENV=/opt/venv
# RUN python3 -m venv $VIRTUAL_ENV
# ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Copy the requirements.txt file into the container
# Copy the requirements.txt file into the container
WORKDIR
/tmp/dependencies/
WORKDIR
/tmp/dependencies/
COPY
/distro_dependencies/* ./
COPY
/distro_dependencies/* ./
...
@@ -83,76 +83,112 @@ COPY /distro_dependencies/* ./
...
@@ -83,76 +83,112 @@ COPY /distro_dependencies/* ./
# Install the packages listed in ${ROS_DISTRO}_requirements.txt
# Install the packages listed in ${ROS_DISTRO}_requirements.txt
RUN if
[
-f
"
${
ROS_DISTRO
}
_requirements.txt"
]
;
\
RUN if
[
-f
"
${
ROS_DISTRO
}
_requirements.txt"
]
;
\
then
\
then
\
apt-get update
&&
\
apt-get update
&&
\
# Install apt-get packages
# Install apt-get packages
awk '/^# APT-GET PACKAGES/,/^# PIP PACKAGES/' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs apt-get install -y && \
awk '/^# APT-GET PACKAGES/,/^# PIP PACKAGES/' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs apt-get install -y && \
# Install pip packages
# Install pip packages
export PIP_BREAK_SYSTEM_PACKAGES=1 && \
# workaround for ROS jazzy
awk '/^# PIP PACKAGES/,0' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs -r -n1 pip install -U ;\
export PIP_BREAK_SYSTEM_PACKAGES=1 && \
apt-get clean; \
awk '/^# PIP PACKAGES/,0' ${ROS_DISTRO}_requirements.txt | grep -v '^#' | xargs -r -n1 pip install -U ;\
apt-get clean; \
fi
fi
RUN
rm
-rf
*
# Install extra packages ws_dependencies
ARG
PACKAGES=none
COPY
/ws_dependencies/* ./
RUN
echo
$PACKAGES
RUN if
[
"
$PACKAGES
"
!=
"none"
]
;
\
then
\
if
[
-f
"
${
PACKAGES
}
"
]
;
\
then
\
# Install apt-get packages
apt-get update && \
awk '/^# APT-GET PACKAGES/,/^# PIP PACKAGES/' ${PACKAGES} | grep -v '^#' | xargs apt-get install -y && \
# Install pip packages
export PIP_BREAK_SYSTEM_PACKAGES=1 && \
awk '/^# PIP PACKAGES/,0' ${PACKAGES} | grep -v '^#' | xargs -r -n1 pip install -U ;\
apt-get clean; \
fi \
fi
RUN
rm
-rf
*
# Install extra libs from .deb files
# Install extra libs from .deb files
WORKDIR
/tmp/srcs/
WORKDIR
/tmp/srcs/
COPY
/extra_libs/* ./
COPY
/extra_libs/* ./
#
Enviroment tools based on ubuntu version
#
Install the packages listed in common_libs.txt
RUN if
[
-f
"common_libs.txt"
]
;
\
RUN if
[
-f
"common_libs.txt"
]
;
\
then
\
then
\
grep
-v
'^#'
common_libs.txt | xargs wget
\
# Download .deb files from common_libs.txt using wget
&&
dpkg
-i
*
.deb
;
\
grep -v '^#' common_libs.txt | xargs wget \
# Install .deb files
&& dpkg -i *.deb; \
fi
fi
# Install notify-osd
RUN
apt-get
--reinstall
install
-y
libnotify-bin notify-osd
RUN
apt-get
--reinstall
install
-y
libnotify-bin notify-osd
RUN
rm
-rf
*
# RUN PIP_BREAK_SYSTEM_PACKAGES=1 pip install git+https://github.com/isl-org/Open3D.git
# Update base image
RUN
apt-get update
\
&&
apt-get
-y
upgrade
\
&&
apt-get
-y
autoremove
\
&&
apt-get
-y
autoclean
# Copy entrypoint
COPY
./ros_entrypoint.sh /
RUN
chmod
a+x /ros_entrypoint.sh
# Set running in docker for zsh powerlevel10k
ENV
RUNNING_IN_DOCKER true
# Set extra environment variables for ROS2
ENV
ROS_LOCALHOST_ONLY=1
ENV
RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# Define entrypoint and command
ENTRYPOINT
["/ros_entrypoint.sh"]
CMD
$EXT_SHELL
# Switch back to dialog for any ad-hoc use of apt-get
ENV
DEBIAN_FRONTEND=
# ***********************************************************
# * WORKSPACE EXTENDED *
# ***********************************************************
# Use devenv as base image
FROM
devenv
as
workspace-extended
# Avoid warnings by switching to noninteractive
ENV
DEBIAN_FRONTEND=noninteractive
# Install extra packages ws_dependencies
ARG
PACKAGES=none
WORKDIR
/tmp/dependencies/
COPY
/ws_dependencies/* ./
RUN if
[
"
$PACKAGES
"
!=
"none"
]
;
\
then
\
if
[
-f
"
${
PACKAGES
}
"
]
;
\
then
\
# Install apt-get packages
apt-get update && \
awk '/^# APT-GET PACKAGES/,/^# PIP PACKAGES/' ${PACKAGES} | grep -v '^#' | xargs apt-get install -y && \
# Install pip packages
export PIP_BREAK_SYSTEM_PACKAGES=1 && \
awk '/^# PIP PACKAGES/,0' ${PACKAGES} | grep -v '^#' | xargs -r -n1 pip install -U ;\
apt-get clean; \
fi \
fi
# Install open3d from source workaround in jazzy
RUN if
[
"
$ROS_DISTRO
"
=
"jazzy"
]
;
\
RUN if
[
"
$ROS_DISTRO
"
=
"jazzy"
]
;
\
then
\
then
\
PIP_BREAK_SYSTEM_PACKAGES
=
1 pip
install
-U
-f
https://www.open3d.org/docs/latest/getting_started.html
--only-binary
open3d open3d
;
\
PIP_BREAK_SYSTEM_PACKAGES
=
1 pip
install
-U
-f
https://www.open3d.org/docs/latest/getting_started.html
--only-binary
open3d open3d
;
\
fi
fi
ARG
PEAK_DRIVER=install
# Install Peak driver
ARG
PEAK_DRIVER=none
RUN if
[
"
$PEAK_DRIVER
"
=
"install"
]
;
\
RUN if
[
"
$PEAK_DRIVER
"
=
"install"
]
;
\
then
\
then
\
apt-get update
&&
apt-get
install
-y
udev libpopt-dev linux-headers-
$(
uname
-r
)
\
apt-get update
&&
apt-get
install
-y
udev libpopt-dev linux-headers-
$(
uname
-r
)
\
&&
wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.18.0.tar.gz
\
&&
wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.18.0.tar.gz
\
# && wget https://www.peak-system.com/quick/PEAK-Linux-Driver -O peak-linux-driver.tar.gz
\
# && wget https://www.peak-system.com/quick/PEAK-Linux-Driver -O peak-linux-driver.tar.gz
\
&&
wget https://www.peak-system.com/quick/BasicLinux
-O
PCAN-Basic_Linux.tar.gz
\
&&
wget https://www.peak-system.com/quick/BasicLinux
-O
PCAN-Basic_Linux.tar.gz
\
&&
tar
-xvf
peak-linux-driver-8.18.0.tar.gz
\
&&
tar
-xvf
peak-linux-driver-8.18.0.tar.gz
\
&&
cd
peak-linux-driver-8.18.0
\
&&
cd
peak-linux-driver-8.18.0
\
&&
make clean
&&
make
install
||
echo
'make failed but move forward'
\
&&
make clean
&&
make
install
||
echo
'make failed but move forward'
\
&&
cd
..
\
&&
cd
..
\
&&
tar
-xvf
PCAN-Basic_Linux.tar.gz
\
&&
tar
-xvf
PCAN-Basic_Linux.tar.gz
\
&&
cd
PCAN-Basic_Linux-4.9.0.7/libpcanbasic
\
&&
cd
PCAN-Basic_Linux-4.9.0.7/libpcanbasic
\
&&
make clean
&&
make
install
||
echo
'make failed but move forward'
;
\
&&
make clean
&&
make
install
||
echo
'make failed but move forward'
;
\
fi
fi
RUN
rm
-rf
*
RUN
rm
-rf
*
# Update this date to re-run the image final update
# Update this date to re-run the image final update
LABEL
image.date=
3
0-1
0
-2024
LABEL
image.date=0
6
-1
1
-2024
# Update final image
# Update final image
RUN
apt-get update
\
RUN
apt-get update
\
...
@@ -160,41 +196,5 @@ RUN apt-get update \
...
@@ -160,41 +196,5 @@ RUN apt-get update \
&&
apt-get
-y
autoremove
\
&&
apt-get
-y
autoremove
\
&&
apt-get
-y
autoclean
&&
apt-get
-y
autoclean
# Set entrypoint
COPY
./ros_entrypoint.sh /
RUN
chmod
a+x /ros_entrypoint.sh
ENV
EXT_SHELL "${EXT_SHELL}"
ENV
RUNNING_IN_DOCKER true
# Switch back to dialog for any ad-hoc use of apt-get
# Switch back to dialog for any ad-hoc use of apt-get
ENV
DEBIAN_FRONTEND=
ENV
DEBIAN_FRONTEND=
# Enable localhost only ROS2
ENV
ROS_LOCALHOST_ONLY=1
ENV
RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ARG
SHELL=/bin/bash
ENV
SHELL="${SHELL}"
# ARG USERNAME=danil
# ARG USER_UID=1000
# ARG USER_GID=$USER_UID
# # Delete user if it exists in container (e.g Ubuntu Noble: ubuntu)
# RUN if id -u $USER_UID ; then userdel `id -un $USER_UID` ; fi
# # Create the user
# RUN groupadd --gid $USER_GID $USERNAME \
# && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
# #
# # [Optional] Add sudo support. Omit if you don't need to install software after connecting.
# && apt-get update \
# && apt-get install -y sudo \
# && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
# && chmod 0440 /etc/sudoers.d/$USERNAME
# USER ${USERNAME}
ENTRYPOINT
["/ros_entrypoint.sh"]
CMD
$EXT_SHELL
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment