forked from OPSnet/Gazelle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile-gitlab
173 lines (158 loc) · 5.9 KB
/
Dockerfile-gitlab
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
FROM debian:bullseye-slim
WORKDIR /var/www
ENV DEBIAN_FRONTEND noninteractive
ENV PHP_VER=8.2
# Software package layer
# Nodesource setup comes after yarnpkg because it runs `apt-get update`
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
apt-transport-https \
build-essential \
ca-certificates \
curl \
gnupg2 \
&& curl -sL https://packages.sury.org/php/apt.gpg | apt-key add - \
&& echo "deb https://packages.sury.org/php/ bullseye main" | tee /etc/apt/sources.list.d/php.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
make \
mktorrent \
nginx \
netcat \
php${PHP_VER}-cli \
php${PHP_VER}-curl \
php${PHP_VER}-fpm \
php${PHP_VER}-gd \
php${PHP_VER}-mbstring \
php${PHP_VER}-memcached \
php${PHP_VER}-mysql \
php${PHP_VER}-pgsql \
php${PHP_VER}-xml \
php${PHP_VER}-zip \
php${PHP_VER}-apcu \
php${PHP_VER}-dev \
php${PHP_VER}-bcmath \
php${PHP_VER}-xdebug \
python3 \
python3-pip \
python3-setuptools \
python3-wheel \
software-properties-common \
unzip \
zlib1g-dev \
&& curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y --no-install-recommends \
nodejs \
yarn \
&& apt-get autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --from=composer:2.5.1 /usr/bin/composer /usr/local/bin/composer
# Python tools layer
RUN pip3 install chardet eac-logchecker xld-logchecker
# Puppeteer layer
# This installs the necessary packages to run the bundled version of chromium for puppeteer
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
gconf-service \
libasound2 \
libatk1.0-0 \
libc6 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libexpat1 \
libfontconfig1 \
libgcc1 \
libgconf-2-4 \
libgdk-pixbuf2.0-0 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libstdc++6 \
libx11-6 \
libx11-xcb1 \
libxcb1 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrandr2 \
libxrender1 \
libxss1 \
libxtst6 \
fonts-liberation \
libnss3 \
lsb-release \
xdg-utils \
&& apt-get autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# If running Docker >= 1.13.0 use docker run's --init arg to reap zombie processes, otherwise
# uncomment the following lines to have `dumb-init` as PID 1
# ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
# RUN chmod +x /usr/local/bin/dumb-init
# ENTRYPOINT ["dumb-init", "--"]
# Uncomment to skip the chromium download when installing puppeteer. If you do,
# you'll need to launch puppeteer with:
# browser.launch({executablePath: 'google-chrome-unstable'})
# ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# testing layer
# backports needed for sphinx
# sphinx needs its config that cannot be passed through a gitlab CI service
# hence it is installed in this container
RUN echo 'deb http://deb.debian.org/debian bullseye-backports main' > /etc/apt/sources.list.d/backports.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
postgresql-client \
default-mysql-client \
libmemcached-tools \
sphinxsearch \
# all below is needed until running cypress headless/electron-less is fixed: https://github.com/cypress-io/cypress/issues/23636
libgtk2.0-0 \
libgtk-3-0 \
libnotify-dev \
libgconf-2-4 \
libgbm-dev \
libnss3 \
libxss1 \
libasound2 \
libxtst6 \
procps \
#xauth \
xvfb \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir /opt/bin \
&& curl -fsSL https://phar.phpunit.de/phpcov-8.2.1.phar --output /opt/bin/phpcov \
&& chmod +x /opt/bin/phpcov \
&& sed -i 's|START=no|START=yes|' /etc/default/sphinxsearch
# add firefox for cypress
# command from https://github.com/cypress-io/cypress-docker-images/blob/master/browsers/node16.16.0-chrome107-ff107/Dockerfile
#RUN curl --output /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/107.0/linux-x86_64/en-US/firefox-107.0.tar.bz2 \
# && tar -C /opt -xjf /tmp/firefox.tar.bz2 \
# && rm /tmp/firefox.tar.bz2 \
# && ln -fs /opt/firefox/firefox /usr/bin/firefox
COPY .docker /var/www/.docker
# Permissions and configuration layer
RUN useradd -ms /bin/bash gazelle \
&& touch /var/log/php_error.log /var/log/xdebug.log \
&& chown -R gazelle:gazelle /var/www /var/log/php_error.log /var/log/xdebug.log \
&& cp /var/www/.docker/web/php.ini /etc/php/${PHP_VER}/cli/php.ini \
&& cp /var/www/.docker/web/php.ini /etc/php/${PHP_VER}/fpm/php.ini \
&& cp /var/www/.docker/web/xdebug.ini /etc/php/${PHP_VER}/mods-available/xdebug.ini \
&& sed -i 's|xdebug.mode=debug|\0,coverage|' /etc/php/${PHP_VER}/mods-available/xdebug.ini \
&& cp /var/www/.docker/web/www.conf /etc/php/${PHP_VER}/fpm/pool.d/www.conf \
&& cp /var/www/.docker/web/nginx.conf /etc/nginx/sites-available/gazelle.conf \
&& ln -s /etc/nginx/sites-available/gazelle.conf /etc/nginx/sites-enabled/gazelle.conf \
&& rm -f /etc/nginx/sites-enabled/default \
&& mkdir /opt/gazelle
COPY mysql_schema.sql mysql_data.sql /opt/gazelle/
EXPOSE 80/tcp
ENTRYPOINT [ "/bin/bash", "/var/www/.docker/web/entrypoint-testing.sh" ]