forked from ITISFoundation/osparc-simcore
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
99 lines (76 loc) · 2.78 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
FROM node:10.15.1 as base-stage
# Used to qx compile and/or serve (dev) client-side code
#
# + /home/scu/ $HOME
# + client/ $PWD, WORKDIR, VOLUME( only devel)
# + docker/ scripts and config to install contributions and run entrypoint
# + source/
# + source-output/ $QOOXDOO_OUTDIR
# + packages.json specifies qx-compiler
# + ...
# + .npm-global/ global npm folder
# + bin/ *
# + node_modules/ local npm folder
# + .bin/ *
# - qx qx compiler executable
# + qooxdoo-sdk/ $QOOXDOO_PATH
# + framework contains qx library
# + tool/
# + bin/ * contains generator.py
#
# * = in $PATH
#
LABEL maintainer=pcrespov
# non-root user uid=1000
# TODO: create instead uid=5000.
RUN groupmod --new-name scu node && \
usermod --login scu --move-home --home /home/scu node
USER scu
ENV HOME /home/scu
ENV NPM_CONFIG_LOGLEVEL warn
ENV NPM_CONFIG_PREFIX $HOME/.npm-global
ENV QOOXDOO_PATH $HOME/qooxdoo-sdk
ENV QOOXDOO_OUTDIR $HOME/client/source-output
ENV PATH "${QOOXDOO_PATH}/tool/bin:${HOME}/node_modules/.bin/:${NPM_CONFIG_PREFIX}/bin:${PATH}"
WORKDIR /home/scu
# 1. installs qx-compiler (see specs in package.json)
COPY --chown=scu:scu package*.json ./
RUN npm install -g npm@latest && \
npm install
# owned by scu now
RUN mkdir $HOME/client
WORKDIR /home/scu/client
EXPOSE 8080
# ------------------------------------------------------------------------------------------
FROM base-stage as development
# NOTE: cannot expose contrib and source-output volumes (to keep them inside)
# within container does not work well because links remain in host
VOLUME /home/scu/client
# 3. installs contribs and qx serve -> source-output/
# NOTE: expects docker available via volume bound
ENTRYPOINT ["./docker/entrypoint.sh"]
# 4. serves
CMD ["serve", "--set", "qx.allowUrlSettings=true"]
# ------------------------------------------------------------------------------------------
FROM base-stage as build
ARG VCS_URL
ARG VCS_REF
ARG VCS_REF_CLIENT
ARG VCS_STATUS_CLIENT
# 3. prepares docker
COPY --chown=scu:scu docker docker
RUN chmod +x docker/*.sh
# 4. Installs qooxdoo contributions in $WORKDIR/contrib/ within container
COPY --chown=scu:scu compile.json compile.json
COPY --chown=scu:scu contrib.json contrib.json
RUN ./docker/install-contrib.sh
# 5. compiles source -> build-output/
COPY --chown=scu:scu source source
COPY --chown=scu:scu Manifest.json Manifest.json
RUN qx compile --target=build \
--set osparc.vcsOriginUrl=\"${VCS_URL}\" \
--set osparc.vcsRef=\"${VCS_REF}\" \
--set osparc.vcsRefClient=\"${VCS_REF_CLIENT}\" \
--set osparc.vcsStatusClient=\"${VCS_STATUS_CLIENT}\"
ENTRYPOINT []
CMD []