mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-01-01 19:46:44 +00:00
488ca41621
This build strategy lends itself to how Rockerfiles work. In the build Dockerfile all the build utilities (e.g gcc, python) are installed and run the build process to produce some build artifacts. There are two build Dockerfiles, one for the nodejs part and one for the golang part. The build artifacts of these are combined into the runtime Dockerfile. For all this to work there is some minimal glue implemented in the Makefile. Part of this commit is a switch of the base image the runtime is based on to the minimal OpenEmbedded one produced by #198 Signed-off-by: Petros Angelatos <petrosagg@gmail.com>
66 lines
2.2 KiB
Docker
66 lines
2.2 KiB
Docker
# Build nodejs dependencies
|
|
|
|
# The node version here should match the version of the runtime image which is
|
|
# specified in the base-image subdirectory in the project
|
|
FROM resin/%%ARCH%%-node:6.5-slim
|
|
|
|
WORKDIR /usr/src/app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y \
|
|
g++ \
|
|
libsqlite3-dev \
|
|
make \
|
|
python \
|
|
rsync \
|
|
wget \
|
|
&& rm -rf /var/lib/apt/lists/ \
|
|
&& npm install -g coffee-script
|
|
|
|
ENV DOCKER_COMPOSE_VERSION 1.7.1
|
|
|
|
ENV DOCKER_COMPOSE_SHA256_amd64 37df85ee18bf0e2a8d71cbfb8198b1c06cc388f19118be7bdfc4d6db112af834
|
|
ENV DOCKER_COMPOSE_SHA256_i386 b926fd9a2a9d89358f1353867706f94558a62caaf3aa72bf10bcbbe31e1a44f0
|
|
ENV DOCKER_COMPOSE_SHA256_rpi 3f0b8c69c66a2daa5fbb0c127cb76ca95d7125827a9c43dd3c36f9bc2ed6e0e5
|
|
ENV DOCKER_COMPOSE_SHA256_armv7hf 3f0b8c69c66a2daa5fbb0c127cb76ca95d7125827a9c43dd3c36f9bc2ed6e0e5
|
|
ENV DOCKER_COMPOSE_SHA256_armel a1025fed97536e2698798ea277a014ec5e1eae816a8cf3155ecbe9679e3e7bac
|
|
|
|
RUN set -x \
|
|
&& mkdir -p rootfs-overlay/usr/bin/ \
|
|
&& ln -s /lib rootfs-overlay/lib64 \
|
|
&& pkgname='docker-compose' \
|
|
&& arch=%%ARCH%% \
|
|
&& if [ $arch = 'rpi' -o $arch = 'armv7hf' ]; then arch=armhf; fi \
|
|
&& base="http://resin-packages.s3.amazonaws.com/${pkgname}" \
|
|
&& pkgver=$DOCKER_COMPOSE_VERSION \
|
|
&& checksum=$DOCKER_COMPOSE_SHA256_%%ARCH%% \
|
|
&& wget "${base}/${pkgver}/${pkgname}-linux-${arch}-${pkgver}.tar.gz" \
|
|
&& echo "$checksum ${pkgname}-linux-${arch}-${pkgver}.tar.gz" | sha256sum -c \
|
|
&& tar xzf "${pkgname}-linux-${arch}-${pkgver}.tar.gz" --strip-components=1 -C rootfs-overlay/usr/bin \
|
|
&& mv "rootfs-overlay/usr/bin/${pkgname}-linux-${arch}" rootfs-overlay/usr/bin/docker-compose
|
|
|
|
COPY package.json /usr/src/app/
|
|
|
|
RUN JOBS=MAX npm install --unsafe-perm --production --no-optional \
|
|
&& npm dedupe
|
|
|
|
COPY src /usr/src/app/src
|
|
|
|
RUN coffee -c src
|
|
|
|
# Remove tar files (sqlite3 module) and tests to reduce space
|
|
RUN find . -name '*.tar.*' -delete \
|
|
&& find . -path '*/test/*' -delete
|
|
|
|
# Create /var/run/resin for the gosuper to place its socket in
|
|
RUN mkdir -p rootfs-overlay/var/run/resin
|
|
|
|
COPY entry.sh run.sh package.json rootfs-overlay/usr/src/app/
|
|
|
|
COPY inittab rootfs-overlay/etc/inittab
|
|
|
|
CMD rsync -a --delete node_modules src rootfs-overlay /build
|
|
|
|
# -*- mode: dockerfile -*-
|
|
# vi: set ft=dockerfile :
|