-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
133 lines (101 loc) · 2.93 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
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
## BUILDER ##
FROM tanatloc/worker as builder
ENV DEBIAN_FRONTEND noninteractive
ENV INSTALL_PATH /home/app
# Install packages
RUN apt update \
&& apt upgrade -yq \
&& apt install -yq \
apt-utils curl \
git gnupg g++ libpq-dev \
make python3 \
&& apt autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Node
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -yq nodejs \
&& apt autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Yarn
RUN corepack enable
# Build
ARG DB_ADMIN
ENV DB_ADMIN $DB_ADMIN
ARG DB_ADMIN_PASSWORD
ENV DB_ADMIN_PASSWORD $DB_ADMIN_PASSWORD
ARG DB_HOST
ENV DB_HOST $DB_HOST
ARG DB_PORT
ENV DB_PORT $DB_PORT
WORKDIR ${INSTALL_PATH}
COPY tanatloc .
RUN YARN_CHECKSUM_BEHAVIOR="update" yarn install \
&& yarn run prestart:norun \
&& yarn run next telemetry disable \
&& yarn run build
## RELEASE ##
FROM tanatloc/worker
ENV DEBIAN_FRONTEND noninteractive
ENV INSTALL_PATH /home/app
ENV APP_PATH /home/app
# Install packages
RUN apt update \
&& apt upgrade -yq \
&& apt install -yq \
curl git gnupg g++ libpq-dev \
make postgresql python3 \
sudo \
&& apt autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Node
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& apt autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Yarn
RUN corepack enable
# Copy
WORKDIR ${APP_PATH}
COPY docker/package.json package.json
# COPY --from=builder ${INSTALL_PATH}/.git .git
COPY --from=builder ${INSTALL_PATH}/.yarn .yarn
COPY --from=builder ${INSTALL_PATH}/.yarnrc.yml .yarnrc.yml
COPY --from=builder ${INSTALL_PATH}/dist dist
COPY --from=builder ${INSTALL_PATH}/dist-install dist-install
COPY --from=builder ${INSTALL_PATH}/public public
COPY --from=builder ${INSTALL_PATH}/templates templates
COPY --from=builder ${INSTALL_PATH}/plugins plugins
COPY --from=builder ${INSTALL_PATH}/.next .next
COPY --from=builder ${INSTALL_PATH}/yarn.lock yarn.lock
# Corepack prepare
RUN YARN_VERSION=$(cat package.json | grep packageManager | head -1 | awk -F: '{ print $2 }' | sed 's/["\ ]//g' | sed 's/yarn@//g') \
&& corepack prepare yarn@${YARN_VERSION} -o=yarn-${YARN_VERSION}.tgz \
&& mkdir -p ./.cache && cp -r /root/.cache/node ./.cache/node
# Build
ARG DB_ADMIN
ENV DB_ADMIN $DB_ADMIN
ARG DB_ADMIN_PASSWORD
ENV DB_ADMIN_PASSWORD $DB_ADMIN_PASSWORD
ARG DB_HOST
ENV DB_HOST $DB_HOST
ARG DB_PORT
ENV DB_PORT $DB_PORT
RUN YARN_CHECKSUM_BEHAVIOR="update" yarn install \
&& yarn run next telemetry disable
# Path
ENV ADDITIONAL_PATH $ADDITIONAL_PATH
# Storage
ENV HOST_STORAGE=${HOST_STORAGE}
# ShareTask
ENV SHARETASK_JVM $SHARETASK_JVM
RUN mkdir -p /usr/local/sharetask/bin
RUN mkdir -p /usr/local/jre/bin
# Start script
COPY docker/start.sh start.sh
RUN chmod a+x start.sh
## START
CMD export PATH="$PATH:$ADDITIONAL_PATH"; ${APP_PATH}/start.sh