-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
43 lines (36 loc) · 1.64 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
FROM python:3.11.2 AS base
RUN apt-get update && apt-get install -y wget bzip2
RUN wget -q https://github.com/pyodide/pyodide/releases/download/0.23.4/pyodide-core-0.23.4.tar.bz2 &&\
tar -xjf pyodide-core-0.23.4.tar.bz2 && mv /pyodide /web && rm pyodide-core-0.23.4.tar.bz2 &&\
rm /web/pyodide.mjs /web/package.json
ENV EMSDK=/opt/emsdk EMSDK_NODE=/opt/emsdk/node/14.18.2_64bit/bin/node \
PATH=/opt/emsdk:/opt/emsdk/upstream/emscripten:/opt/emsdk/node/14.18.2_64bit/bin:$PATH
RUN git clone https://github.com/emscripten-core/emsdk.git $EMSDK &&\
emsdk install 3.1.32 && emsdk activate 3.1.32 && pip install pyodide-build==0.23.4 swig==4.1.1
RUN wget -q https://cdn.jsdelivr.net/pyodide/v0.23.4/full/numpy-1.24.2-cp311-cp311-emscripten_3_1_32_wasm32.whl -P /web/
RUN git clone https://github.com/szabolcsdombi/zengl -b 1.13.0 /zengl
RUN pyodide build /zengl -o /web/
FROM base AS canvas
COPY modules/canvas /canvas
RUN pyodide build /canvas -o /web/
FROM base AS ottosim
COPY modules/ottosim /ottosim
RUN pyodide build /ottosim -o /web/ --exports pyinit
FROM node:20 AS build
WORKDIR /app/
COPY package.json package-lock.json /app/
RUN npm install
COPY tsconfig.json webpack.config.js /app/
COPY dist/index.html dist/favicon.svg /app/dist/
COPY dist/editor /app/dist/editor
COPY dist/play /app/dist/play
COPY src /app/src
RUN npx webpack
COPY patch.py /
RUN python3 /patch.py
FROM nginx:1.25.1
COPY --from=base /web /web
COPY --from=canvas /web/canvas-0.1.0-cp311-cp311-emscripten_3_1_32_wasm32.whl /web/
COPY --from=ottosim /web/ottosim-0.1.0-cp311-cp311-emscripten_3_1_32_wasm32.whl /web/
COPY --from=build /app/dist /web
COPY nginx.conf /etc/nginx/nginx.conf