forked from doccano/doccano
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Dockerfile
74 lines (52 loc) · 1.86 KB
/
Dockerfile
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
ARG PYTHON_VERSION="3.6"
FROM python:${PYTHON_VERSION}-stretch AS builder
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ARG NODE_VERSION="8.x"
# hadolint ignore=DL3008
RUN curl -sL "https://deb.nodesource.com/setup_${NODE_VERSION}" | bash - \
&& apt-get install --no-install-recommends -y \
nodejs
ARG HADOLINT_VERSION=v1.17.1
RUN curl -fsSL "https://github.com/hadolint/hadolint/releases/download/${HADOLINT_VERSION}/hadolint-Linux-$(uname -m)" -o /usr/local/bin/hadolint \
&& chmod +x /usr/local/bin/hadolint
COPY tools/install-mssql.sh /doccano/tools/install-mssql.sh
RUN /doccano/tools/install-mssql.sh --dev
COPY app/server/static/package*.json /doccano/app/server/static/
WORKDIR /doccano/app/server/static
RUN npm ci
COPY requirements.txt /
RUN pip install -r /requirements.txt \
&& pip wheel -r /requirements.txt -w /deps
COPY Dockerfile /
RUN hadolint /Dockerfile
COPY . /doccano
WORKDIR /doccano
RUN tools/ci.sh
FROM builder AS cleaner
WORKDIR /doccano/app/server/static
RUN SOURCE_MAP=False DEBUG=False npm run build \
&& rm -rf components pages node_modules .*rc package*.json webpack.config.js
WORKDIR /doccano
RUN python app/manage.py collectstatic --noinput
FROM python:${PYTHON_VERSION}-slim-stretch AS runtime
COPY --from=builder /doccano/tools/install-mssql.sh /doccano/tools/install-mssql.sh
RUN /doccano/tools/install-mssql.sh
RUN useradd -ms /bin/sh doccano
RUN mkdir /data \
&& chown doccano:doccano /data
COPY --from=builder /deps /deps
# hadolint ignore=DL3013
RUN pip install --no-cache-dir /deps/*.whl
COPY --from=cleaner --chown=doccano:doccano /doccano /doccano
VOLUME /data
ENV DATABASE_URL="sqlite:////data/doccano.db"
ENV DEBUG="True"
ENV SECRET_KEY="change-me-in-production"
ENV PORT="8000"
ENV WORKERS="2"
ENV GOOGLE_TRACKING_ID=""
ENV AZURE_APPINSIGHTS_IKEY=""
USER doccano
WORKDIR /doccano
EXPOSE ${PORT}
CMD ["/doccano/tools/run.sh"]