mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-17 15:53:28 +02:00
65 lines
2.3 KiB
Docker
65 lines
2.3 KiB
Docker
# Get the base image by running the included `mkimage-alpine.sh` script, or
|
|
# get a fresh copy from github.com/docker/docker/contrib/.
|
|
FROM alpine:3.5
|
|
|
|
# Copy app source.
|
|
COPY . /tmp/build/
|
|
|
|
# Sneak the stf executable into $PATH.
|
|
ENV PATH /app/bin:$PATH
|
|
|
|
# Build the whole thing. Since Docker Hub doesn't really support other archs,
|
|
# we'll run a full daily build by ourselves, so it doesn't necessary have to
|
|
# be separated into multiple steps for speed.
|
|
#
|
|
# Node build taken from https://github.com/mhart/alpine-node and slightly adapted.
|
|
RUN set -xo pipefail && \
|
|
echo '--- Updating repositories' && \
|
|
apk update && \
|
|
echo '--- Building node' && \
|
|
apk add curl make gcc g++ binutils-gold python linux-headers paxctl libgcc libstdc++ && \
|
|
curl -sSL https://nodejs.org/dist/v6.11.2/node-v6.11.2.tar.gz | tar -xz && \
|
|
cd /node-v* && \
|
|
./configure --prefix=/usr && \
|
|
make -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
|
|
make install && \
|
|
paxctl -cm /usr/bin/node && \
|
|
echo '--- Building app' && \
|
|
addgroup -S stf && \
|
|
adduser -S -G stf stf && \
|
|
chown -R stf:stf /tmp/build && \
|
|
cd /tmp/build && \
|
|
export PATH=$PWD/node_modules/.bin:$PATH && \
|
|
sed -i'' -e '/phantomjs/d' package.json && \
|
|
apk add git zeromq-dev protobuf-dev graphicsmagick && \
|
|
export JOBS=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
|
|
echo 'npm install --no-optional' | su stf -s /bin/sh && \
|
|
echo '--- Assembling app' && \
|
|
echo 'npm pack' | su stf -s /bin/sh && \
|
|
tar -xzf stf-*.tgz && \
|
|
mv package /app && \
|
|
echo 'bower cache clean' | su stf -s /bin/sh && \
|
|
echo 'npm prune --production' | su stf -s /bin/sh && \
|
|
mv node_modules /app && \
|
|
chown -R root:root /app && \
|
|
echo '--- Cleaning up' && \
|
|
echo 'npm cache clean' | su stf -s /bin/sh && \
|
|
rm -rf /home/stf/.node-gyp && \
|
|
apk del curl make gcc g++ binutils-gold python linux-headers paxctl && \
|
|
rm -rf /node-v* \
|
|
/usr/share/man /tmp/* /var/cache/apk/* /root/.npm /root/.node-gyp \
|
|
/usr/lib/node_modules/npm/man /usr/lib/node_modules/npm/doc /usr/lib/node_modules/npm/html
|
|
|
|
# Work in app dir by default.
|
|
WORKDIR /app
|
|
|
|
# Export default app port, not enough for all processes but it should do
|
|
# for now.
|
|
EXPOSE 3000
|
|
|
|
# Switch to weak user.
|
|
USER stf
|
|
|
|
# Show help by default.
|
|
CMD stf --help
|