1 |
3edf22f1
|
Jakub Danek
|
#############
|
2 |
|
|
### build ###
|
3 |
|
|
#############
|
4 |
|
|
|
5 |
|
|
# base image
|
6 |
|
|
FROM node:12.2.0 as build
|
7 |
|
|
|
8 |
|
|
# set working directory
|
9 |
|
|
WORKDIR /app
|
10 |
|
|
|
11 |
|
|
# add `/app/node_modules/.bin` to $PATH
|
12 |
|
|
ENV PATH /app/node_modules/.bin:$PATH
|
13 |
|
|
|
14 |
5bbe3b0b
|
Pavel Fidransky
|
# copy package.json and package-lock.json to container
|
15 |
|
|
COPY package.json package-lock.json ./
|
16 |
|
|
|
17 |
3edf22f1
|
Jakub Danek
|
# install and cache app dependencies
|
18 |
|
|
RUN npm install
|
19 |
|
|
|
20 |
|
|
# add app
|
21 |
|
|
COPY . /app
|
22 |
|
|
|
23 |
|
|
# run tests - COMMENTED, later
|
24 |
5bbe3b0b
|
Pavel Fidransky
|
#RUN npm run test
|
25 |
3edf22f1
|
Jakub Danek
|
|
26 |
|
|
# generate build
|
27 |
5bbe3b0b
|
Pavel Fidransky
|
RUN npm run build
|
28 |
3edf22f1
|
Jakub Danek
|
|
29 |
|
|
############
|
30 |
|
|
### prod ###
|
31 |
|
|
############
|
32 |
|
|
|
33 |
5bbe3b0b
|
Pavel Fidransky
|
# inspired by https://torstenwalter.de/openshift/nginx/2017/08/04/nginx-on-openshift.html
|
34 |
|
|
|
35 |
3edf22f1
|
Jakub Danek
|
# base image
|
36 |
|
|
FROM nginx:1.16.0-alpine
|
37 |
|
|
|
38 |
5bbe3b0b
|
Pavel Fidransky
|
# support running as arbitrary user which belogs to the root group
|
39 |
|
|
RUN chmod g+rwx /var/cache/nginx /var/run /var/log/nginx
|
40 |
|
|
|
41 |
|
|
# expose port 8081
|
42 |
|
|
EXPOSE 8081
|
43 |
|
|
|
44 |
|
|
# comment user directive as master process is run as user in OpenShift anyhow
|
45 |
|
|
RUN sed -i.bak 's/^user/#user/' /etc/nginx/nginx.conf
|
46 |
|
|
|
47 |
57ffe6f9
|
Pavel Fidransky
|
# copy nginx configuration
|
48 |
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
49 |
|
|
|
50 |
3edf22f1
|
Jakub Danek
|
# copy artifact build from the 'build environment'
|
51 |
5bbe3b0b
|
Pavel Fidransky
|
COPY --from=build /app/build /usr/share/nginx/html
|
52 |
3edf22f1
|
Jakub Danek
|
|
53 |
|
|
# run nginx
|
54 |
|
|
CMD ["nginx", "-g", "daemon off;"]
|