101 lines
3.1 KiB
Docker
101 lines
3.1 KiB
Docker
FROM gcc:latest as base
|
|
|
|
FROM base as development
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y \
|
|
entr \
|
|
cmake \
|
|
libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev \
|
|
libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev \
|
|
sudo lldb \
|
|
alsa-utils \
|
|
&& rm -rf /var/cache/apt/*
|
|
|
|
|
|
RUN groupadd -g 1000 dev && useradd -m -u 1000 -g dev dev
|
|
RUN chsh -s /bin/bash dev # Set the default shell to bash for the dev user
|
|
|
|
WORKDIR /app
|
|
RUN chown -R dev:dev /app
|
|
|
|
RUN echo "dev ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/dev && \
|
|
chmod 0440 /etc/sudoers.d/dev
|
|
|
|
# COPY scripts ./scripts
|
|
# RUN chmod +x /app/scripts/*.sh
|
|
|
|
USER dev
|
|
SHELL ["/bin/bash", "-c"]
|
|
RUN g++ --version
|
|
|
|
RUN git clone https://github.com/emscripten-core/emsdk.git libs/emsdk && \
|
|
cd libs/emsdk && \
|
|
./emsdk install latest && \
|
|
./emsdk activate latest && \
|
|
cd ../..
|
|
|
|
RUN echo 'source "/app/libs/emsdk/emsdk_env.sh"' >> $HOME/.bash_profile
|
|
# RUN source "/app/emsdk/emsdk_env.sh"
|
|
|
|
RUN git clone https://github.com/raysan5/raylib.git libs/raylib \
|
|
&& cd libs/raylib \
|
|
&& mkdir build && cd build \
|
|
&& cmake -DBUILD_SHARED_LIBS=OFF -DRAYLIB_STATIC=ON .. \
|
|
&& make \
|
|
&& sudo make install \
|
|
&& cd ../..
|
|
|
|
# RUN mkdir dist
|
|
# && cmake -DBUILD_SHARED_LIBS=ON .. \
|
|
|
|
ENV LD_LIBRARY_PATH=/app/libs/raylib/build/raylib
|
|
|
|
RUN cd libs/raylib/src && \
|
|
source /app/libs/emsdk/emsdk_env.sh && \
|
|
emcc -c rcore.c -Os -Wall -DPLATFORM_WEB -DGRAPHICS_API_OPENGL_ES2 && \
|
|
emcc -c rshapes.c -Os -Wall -DPLATFORM_WEB -DGRAPHICS_API_OPENGL_ES2 && \
|
|
emcc -c rtextures.c -Os -Wall -DPLATFORM_WEB -DGRAPHICS_API_OPENGL_ES2 && \
|
|
emcc -c rtext.c -Os -Wall -DPLATFORM_WEB -DGRAPHICS_API_OPENGL_ES2 && \
|
|
emcc -c rmodels.c -Os -Wall -DPLATFORM_WEB -DGRAPHICS_API_OPENGL_ES2 && \
|
|
emcc -c utils.c -Os -Wall -DPLATFORM_WEB && \
|
|
emcc -c raudio.c -Os -Wall -DPLATFORM_WEB && \
|
|
emar rcs libraylib.a rcore.o rshapes.o rtextures.o rtext.o rmodels.o utils.o raudio.o && \
|
|
cd ../..
|
|
|
|
# CMD ["bash"]
|
|
|
|
FROM development as build
|
|
|
|
RUN mkdir dist html src include assets
|
|
|
|
COPY include include
|
|
COPY src src
|
|
COPY html html
|
|
COPY assets assets
|
|
|
|
# CMD ["tail", "-f", "/dev/null"]
|
|
# Run the production build command to generate game.js and game.wasm
|
|
RUN source /app/libs/emsdk/emsdk_env.sh && \
|
|
emcc $(find src/ -name "*.cpp") -o dist/game.js -O3 -Wno-missing-braces \
|
|
-I./include -I/app/libs/raylib/build/raylib/include \
|
|
-L/app/libs/raylib/src /app/libs/raylib/src/libraylib.a \
|
|
-s ALLOW_MEMORY_GROWTH=1 -s INITIAL_MEMORY=536870912 -s MAXIMUM_MEMORY=4294967296 \
|
|
-s --preload-file assets@/assets -s USE_GLFW=3 -s ASSERTIONS=2 -DPLATFORM_WEB
|
|
|
|
# CMD ["tail", "-f", "/dev/null"]
|
|
|
|
FROM nginx:alpine as production
|
|
|
|
# Remove the default nginx index.html
|
|
RUN rm -rf /usr/share/nginx/html/*
|
|
|
|
# Copy the generated files from the production stage into the Nginx html directory
|
|
COPY --from=build /app/dist/ /usr/share/nginx/html/
|
|
COPY --from=build /app/html/index.html /usr/share/nginx/html/
|
|
|
|
# Expose port 80 to allow Nginx to serve the files
|
|
EXPOSE 80
|
|
|
|
# Start Nginx server
|
|
CMD ["nginx", "-g", "daemon off;"] |