-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
110 lines (74 loc) · 2.59 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
FROM node:12-alpine as razzle_base
# Creating working directory
RUN mkdir /code
WORKDIR /code
ARG PUBLIC_PATH=https://localhost/
ENV PUBLIC_PATH=${PUBLIC_PATH}
COPY razzle/razzle_entrypoint.sh /usr/local/bin/docker-entrypoint.sh
# Copying requirements
COPY razzle/package.json package.json
COPY razzle/yarn.lock yarn.lock
RUN apk add --no-cache --virtual .build-deps \
musl-dev git \
&& yarn install \
&& cp yarn.lock yarn_run.lock \
&& cp -R node_modules node_modules_run \
&& yarn install --dev \
&& runDeps="$( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .rundeps $runDeps \
&& apk del .build-deps
RUN chmod u+x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
FROM razzle_base as razzle_development
ENV RAZZLE_ENV=development
RUN rm -rf node_modules_run && rm yarn_run.lock
EXPOSE 3001
# Start server
CMD ["yarn", "start"]
FROM razzle_base as razzle_production
ENV RAZZLE_ENV=production
COPY razzle/src src/
COPY razzle/public public/
COPY razzle/razzle.config.js razzle.config.js
RUN yarn build \
&& rm -rf node_modules \
&& rm yarn.lock \
&& mv node_modules_run node_modules \
&& mv yarn_run.lock yarn.lock \
&& rm -rf src public razzle.config.js
EXPOSE 3000
# Start server
CMD ["yarn", "start:prod"]
FROM nginx:stable-alpine as nginx_development
ARG BUILD_TYPE=advanced
ENV HASURA_UPSTREAM_HOST="hasura"
ENV KEYCLOAK_UPSTREAM_HOST="keycloak"
ENV RAZZLE_UPSTREAM_HOST="razzle"
ENV HASURA_UPSTREAM_PORT="8080"
ENV KEYCLOAK_UPSTREAM_PORT="8080"
ENV RAZZLE_UPSTREAM_PORT="3001"
COPY nginx/nginx_entrypoint.sh /usr/local/bin/docker-entrypoint.sh
COPY nginx/${BUILD_TYPE}/default_dev.conf.template /etc/nginx/conf.d/default.template
RUN chmod u+x /usr/local/bin/docker-entrypoint.sh
EXPOSE 80
ENTRYPOINT ["docker-entrypoint.sh"]
FROM nginx:stable-alpine as nginx_production
ARG BUILD_TYPE=advanced
ENV HASURA_UPSTREAM_HOST="hasura"
ENV KEYCLOAK_UPSTREAM_HOST="keycloak"
ENV RAZZLE_UPSTREAM_HOST="razzle"
ENV HASURA_UPSTREAM_PORT="8080"
ENV KEYCLOAK_UPSTREAM_PORT="8080"
ENV RAZZLE_UPSTREAM_PORT="3000"
COPY nginx/nginx_entrypoint.sh /usr/local/bin/docker-entrypoint.sh
COPY nginx/${BUILD_TYPE}/default.conf.template /etc/nginx/conf.d/default.template
COPY --from=razzle_production /code/build/public/ /usr/share/nginx/html/
RUN chmod u+x /usr/local/bin/docker-entrypoint.sh
EXPOSE 80
ENTRYPOINT ["docker-entrypoint.sh"]