Skip to content

Instantly share code, notes, and snippets.

@rcoup
Last active August 31, 2021 12:47
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcoup/35e11e31d069689c9c09a70cc2fc7a0d to your computer and use it in GitHub Desktop.
Save rcoup/35e11e31d069689c9c09a70cc2fc7a0d to your computer and use it in GitHub Desktop.
Docker container for SWIG. Helpful when you need a specific version to avoid massive diffs.
# Usage
#
# To build:
# $ docker build --build-arg SWIG_VERSION=3.0.10 -t swig .
#
# To run:
# host$ docker run --rm -it -v $(pwd):/src swig
# cont$ swig ...
#
# For SWIG 4.x use bullseye, for 3.x use buster
ARG DEB_RELEASE=buster
# -- Build swig here --
FROM debian:${DEB_RELEASE}-slim AS builder
ARG SWIG_VERSION=3.0.8
RUN sed -Ee 's/^deb /deb-src /' /etc/apt/sources.list >> /etc/apt/sources.list.d/debsrc.list \
&& apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends \
build-essential \
man \
wget \
ca-certificates \
&& DEBIAN_FRONTEND=noninteractive apt-get build-dep -q -y --no-install-recommends \
"swig${SWIG_VERSION%.*}" \
&& rm -rf /var/lib/apt/lists/*
RUN wget "https://sourceforge.net/projects/swig/files/swig/swig-${SWIG_VERSION}/swig-${SWIG_VERSION}.tar.gz/download" -O swig.tar.gz \
&& tar xzf "swig.tar.gz"
RUN cd "swig-${SWIG_VERSION}/" \
&& ./configure \
&& make \
&& make install
# -- Runtime image --
FROM debian:${DEB_RELEASE}-slim
RUN adduser -q swig --disabled-password --gecos '' \
&& mkdir /src \
&& apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends \
libc6 \
libgcc1 \
libpcre3 \
libstdc++6 \
zlib1g \
make \
python3 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/ /usr/local/
USER swig
WORKDIR /src
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment