Dockerfile 3.13 KB
Newer Older
1
FROM gitlab/gitlab-runner:ubuntu
Michał 'rysiek' Woźniak's avatar
Michał 'rysiek' Woźniak committed
2 3 4
MAINTAINER Michał "rysiek" Woźniak <rysiek@occrp.org>

#
5
# a Gitlab CI container to be used with Jekyll static site generator
Michał 'rysiek' Woźniak's avatar
Michał 'rysiek' Woźniak committed
6 7 8 9
#

# environment
ENV DEBIAN_FRONTEND=noninteractive 
10

11 12 13 14 15 16 17
# uid and gid of the gitlab-runner user
ARG GITLAB_RUNNER_UID=999
ARG GITLAB_RUNNER_GID=999

# and let's modify the group and the user
RUN groupmod --gid ${GITLAB_RUNNER_GID} gitlab-runner \
    && usermod --uid "${GITLAB_RUNNER_UID}" gitlab-runner
18

19 20
# we need this to be able to handle the node repo setup
RUN DEBIAN_FRONTEND=noninteractive apt-get -q update && \
21 22 23 24
        apt-get -q -y --no-install-recommends install \
            gnupg \
            apt-transport-https \
            ca-certificates \
25
            locales \
26 27 28
            lsb-release && \
        apt-get -q clean && \
        apt-get -q -y autoremove && \
29 30
        rm -rf /var/lib/apt/lists/*

31 32 33 34 35 36 37
# need en_US.UTF-8 locale for SASS to handle UTF-8 characters in CSS
# http://code.dblock.org/2011/06/09/compass-invalid-us-ascii-character-xe2.html
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN locale-gen en_US.UTF-8

38 39 40 41 42
# add the node repo key
COPY node-repo-key.asc /tmp/node-repo-key.asc
RUN apt-key add /tmp/node-repo-key.asc

# add the node repo
43
RUN echo "deb https://deb.nodesource.com/node_8.x xenial main\ndeb-src https://deb.nodesource.com/node_8.x xenial main\n" > /etc/apt/sources.list.d/node_8.x.list
44 45 46 47

# adding additional repository keys from build args
ARG ADD_REPOSITORY_KEYS=
RUN if [ "$ADD_REPOSITORY_KEYS" != "" ]; then \
48 49
        echo "$ADD_REPOSITORY_KEYS" | sed -e 's/^[[:space:]]*//' | apt-key add - ; \
    fi
50

51
# adding repositories from build args
52 53
ARG ADD_REPOSITORIES=
RUN if [ "$ADD_REPOSITORIES" != "" ]; then \
Michał 'rysiek' Woźniak's avatar
bugfix  
Michał 'rysiek' Woźniak committed
54
        echo "$ADD_REPOSITORIES" | sed -e 's/^[[:space:]]*//' > /etc/apt/sources.list.d/added-from-docker-build-arg.list ; \
55 56
    fi

Michał 'rysiek' Woźniak's avatar
fixed  
Michał 'rysiek' Woźniak committed
57
# Ruby and requirements
Michał 'rysiek' Woźniak's avatar
Michał 'rysiek' Woźniak committed
58 59 60 61
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        make \
        gcc \
62
        g++ \
Michał 'rysiek' Woźniak's avatar
fixed  
Michał 'rysiek' Woźniak committed
63 64 65 66
        libc-dev-bin \
        libc6-dev \
        linux-libc-dev \
        libc6 \
67
        software-properties-common \
68 69 70
        rsync \
        imagemagick \
        nodejs && \
71
    rm -rf /var/lib/apt/lists/*
72

73 74
# npm's self-signed CA is no more
# https://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Michał 'rysiek' Woźniak's avatar
bugfix  
Michał 'rysiek' Woźniak committed
75
RUN npm config -g set ca ""
76

77 78 79 80
# need a newer Ruby
RUN add-apt-repository ppa:brightbox/ruby-ng && \
    apt-get update && \
    apt-get install -y --no-install-recommends \
81 82
        ruby2.6 \
        ruby2.6-dev && \
83
    rm -rf /var/lib/apt/lists/*
84

85 86 87 88 89 90 91 92
# we might need to install some packages, but doing this in the entrypoint doesn't make any sense
ARG INSTALL_PACKAGES=
RUN if [ "$INSTALL_PACKAGES" != "" ]; then \
        export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y \
            $INSTALL_PACKAGES \
            --no-install-recommends && \
        rm -rf /var/lib/apt/lists/* ; \
    fi
93

94
# Jekyll-related requirements
95
RUN gem2.6 install jekyll:'<4' bundler:'<2'
96
RUN /usr/bin/npm install bower -g
Michał 'rysiek' Woźniak's avatar
Michał 'rysiek' Woźniak committed
97

98 99 100 101
# copy in the entrypoint script
COPY entrypoint /
RUN chmod +x /entrypoint

102
VOLUME ["/etc/gitlab-runner", "/home/gitlab-runner", "/output"]