mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
4d3777578e
Summary: This adds a two-stage Dockerfile for grist-core. The first stage builds Grist, and the second collects all files needed to run Grist. The resulting image is about 600 MB which is quite a bit bigger than it needs to be, but seems fine for now when the first goal is to establish that people can open and edit Grist files on their own infrastructure. The image uses stock python rather than our sandboxed python for now. Test Plan: manual Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2637
60 lines
1.7 KiB
Docker
60 lines
1.7 KiB
Docker
################################################################################
|
|
## Build stage
|
|
################################################################################
|
|
|
|
FROM node:10 as builder
|
|
|
|
# Install all node dependencies.
|
|
ADD package.json package.json
|
|
RUN npm i
|
|
|
|
# Build node code.
|
|
ADD tsconfig.json tsconfig.json
|
|
ADD app app
|
|
ADD stubs stubs
|
|
ADD buildtools buildtools
|
|
ADD static static
|
|
RUN npm run build:prod
|
|
|
|
# Install all python dependencies.
|
|
ADD sandbox/requirements.txt requirements.txt
|
|
RUN \
|
|
apt update && \
|
|
apt install -y python-pip && \
|
|
pip install -r requirements.txt
|
|
|
|
################################################################################
|
|
## Run-time stage
|
|
################################################################################
|
|
|
|
# Now, start preparing final image.
|
|
FROM node:10-slim
|
|
|
|
# Copy node files.
|
|
COPY --from=builder /node_modules node_modules
|
|
COPY --from=builder /_build _build
|
|
COPY --from=builder /static static
|
|
|
|
# Copy python files.
|
|
COPY --from=builder /usr/bin/python2.7 /usr/bin/python2.7
|
|
COPY --from=builder /usr/lib/python2.7 /usr/lib/python2.7
|
|
COPY --from=builder /usr/local/lib/python2.7 /usr/local/lib/python2.7
|
|
|
|
# Add files needed for running server.
|
|
ADD package.json package.json
|
|
ADD ormconfig.js ormconfig.js
|
|
ADD bower_components bower_components
|
|
ADD sandbox sandbox
|
|
|
|
# Set some default environment variables to give a setup that works out of the box when
|
|
# started as:
|
|
# docker run -p 8484:8484 -it <image>
|
|
# Variables will need to be overridden for other setups.
|
|
ENV GRIST_ORG_IN_PATH=true
|
|
ENV GRIST_HOST=0.0.0.0
|
|
ENV APP_HOME_URL=http://localhost:8484
|
|
ENV GRIST_DATA_DIR=docs
|
|
RUN mkdir -p docs
|
|
EXPOSE 8484
|
|
CMD npm run start:prod
|