-
Notifications
You must be signed in to change notification settings - Fork 11
/
Dockerfile
57 lines (44 loc) · 1.82 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
ARG BASE_IMAGE=base
FROM ros:jazzy AS base
# Edit apt config for caching and update once
RUN mv /etc/apt/apt.conf.d/docker-clean /etc/apt/ && \
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' \
> /etc/apt/apt.conf.d/keep-cache && \
apt-get update
################################################################################
# MARK: prepper - prep rgl dependencies
################################################################################
### Core dependencies stage
FROM $BASE_IMAGE AS prepper
# Set working directory using standard opt path
WORKDIR /opt/rgl
# Copy package manifest
COPY package.xml src/RGLGazeboPlugin/package.xml
# Install bootstrap tools for install scripts
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \
rosdep install -y \
--from-paths src \
--ignore-src
################################################################################
# MARK: builder - build rgl binaries
################################################################################
FROM prepper AS builder
# Copy source tree
COPY . src/RGLGazeboPlugin
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
colcon build
################################################################################
# MARK: dancer - multi-stage for cache dancing
################################################################################
FROM builder AS dancer
# Copy entire build directory
# RUN mkdir /dancer && \
# cp -rT build /dancer
# Copy only the lib and bin directories
RUN mkdir /dancer && \
cp -rT install /dancer
################################################################################
# MARK: exporter - export rgl binaries and executables
################################################################################
FROM scratch AS exporter
COPY --from=dancer /dancer /