-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathDockerfile
More file actions
108 lines (97 loc) · 3.2 KB
/
Copy pathDockerfile
File metadata and controls
108 lines (97 loc) · 3.2 KB
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
FROM python:2.7.18-buster AS dev
COPY --from=ghcr.io/astral-sh/uv:0.8.0 /uv /uvx /bin/
# Use the Debian archive for EOL Buster
RUN echo "deb http://archive.debian.org/debian/ buster main" > /etc/apt/sources.list \
&& echo "deb http://archive.debian.org/debian-security/ buster/updates main" >> /etc/apt/sources.list \
&& echo "deb http://archive.debian.org/debian/ buster-updates main" >> /etc/apt/sources.list
# dev user
ARG UID=1000
ARG GID=1000
RUN groupadd -g "${GID}" dev \
&& useradd --create-home --no-log-init -u "${UID}" -g "${GID}" dev
# system dependencies
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y ca-certificates ca-certificates-java \
&& update-ca-certificates --fresh \
&& apt-get install -y \
antiword \
build-essential \
curl \
fonts-sil-gentium \
ghostscript \
git \
imagemagick \
libssl-dev \
mercurial \
nodejs \
npm \
pdftk \
poppler-utils \
postgresql-client \
python-dev \
rabbitmq-server \
rubber \
ruby-dev \
rubygems \
texlive-font-utils \
texlive-fonts-extra \
texlive-fonts-recommended \
texlive-generic-recommended \
texlive-latex-extra \
texlive-latex-recommended \
xfonts-base \
xfonts-75dpi \
&& rm -rf /var/lib/apt/lists/*
RUN curl -L https://ctan.org/tex-archive/obsolete/fonts/gentium/fonts/truetype/public/gentium?lang=en -o /usr/share/fonts/truetype/gentium/GenR102.ttf
# Python deps
RUN mkdir -p /opt/app
RUN chown dev:dev /opt/app
WORKDIR /opt/app
COPY --chown=dev:dev pyproject.toml uv.loc[k] shrinkwrap.txt ./
# Install deps into system python
#ENV UV_PROJECT_ENVIRONMENT=/usr/local
#RUN uv sync
RUN pip install -r shrinkwrap.txt
RUN pip install psycopg2-binary
# additional weird deps
RUN gem install rubygems-update -v 3.3.26 --no-document \
&& update_rubygems \
&& gem install compass --no-document
RUN npm install -g coffee-script
RUN curl -L https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb -o /tmp/wkhtmltox_0.12.6-1.buster_amd64.deb \
&& dpkg -i /tmp/wkhtmltox_0.12.6-1.buster_amd64.deb \
&& rm /tmp/wkhtmltox_0.12.6-1.buster_amd64.deb
## sass
#ARG SASS_VERSION=1.89.2
#ARG SASS_ARCH=x64
#RUN curl -L "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-linux-${SASS_ARCH}.tar.gz" -o /tmp/sass.tar.gz \
# && tar -xzf /tmp/sass.tar.gz -C /opt \
# && ln -s /opt/dart-sass/sass /usr/local/bin/sass
# project
USER dev
WORKDIR /opt/app
COPY . .
CMD ./scanblog/manage.py runserver 0.0.0.0:$PORT
#
# Selenium
#
FROM dev AS selenium
USER root
RUN apt-get update \
&& apt-get install -y \
firefox-esr \
xwayland \
xauth \
x11-utils \
dbus \
&& rm -rf /var/lib/apt/lists/*
RUN curl -L https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz -o /tmp/geckodriver-v0.33.0-linux64.tar.gz \
&& tar -xvzf /tmp/geckodriver-v0.33.0-linux64.tar.gz -C /tmp \
&& chmod a+x /tmp/geckodriver \
&& mv /tmp/geckodriver /usr/local/bin/ \
&& rm /tmp/geckodriver-v0.33.0-linux64.tar.gz
USER dev
WORKDIR /opt/app
COPY . .
CMD ./scanblog/manage.py test