mirror of
https://github.com/khoj-ai/khoj.git
synced 2024-11-30 10:53:02 +01:00
a53178cab9
To improve the developer experience for front-end development, we're migrating to Next.js. In order to do this migration page-by-page, we're using static site generation via Next.js. This also helps us avoid making cross site requests from front-end to back-end for the time being, while giving a ramp to separating out server and client if needed for scale down the road. Dev instructions for using the next.js setup are in the added README. This adds scaffolding for including the built files in the python package as well as the docker images. Docker setup has been tested locally. In order to verify the build is working as expected, we can navigate to the {khoj_host}:42110/experimental and verify that the experiment page comes up. This setup works with serving static files included in the src/interface/web folder from the Django app. The key bit for understanding the setup is in the yarn export command in package.json.
40 lines
1.3 KiB
Docker
40 lines
1.3 KiB
Docker
FROM ubuntu:jammy
|
|
|
|
LABEL org.opencontainers.image.source https://github.com/khoj-ai/khoj
|
|
|
|
# Install System Dependencies
|
|
RUN apt update -y && apt -y install python3-pip libsqlite3-0 ffmpeg libsm6 libxext6 swig curl
|
|
|
|
# Install Node.js and Yarn
|
|
RUN curl -sL https://deb.nodesource.com/setup_22.x | bash -
|
|
RUN apt -y install nodejs
|
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
|
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
|
RUN apt update && apt -y install yarn
|
|
|
|
WORKDIR /app
|
|
|
|
# Install Application
|
|
COPY pyproject.toml .
|
|
COPY README.md .
|
|
ARG VERSION=0.0.0
|
|
RUN sed -i "s/dynamic = \\[\"version\"\\]/version = \"$VERSION\"/" pyproject.toml && \
|
|
TMPDIR=/home/cache/ pip install --cache-dir=/home/cache/ -e .[prod]
|
|
|
|
# Copy Source Code
|
|
COPY . .
|
|
|
|
# Set the PYTHONPATH environment variable in order for it to find the Django app.
|
|
ENV PYTHONPATH=/app/src:$PYTHONPATH
|
|
|
|
# Go to the directory src/interface/web and export the built Next.js assets
|
|
WORKDIR /app/src/interface/web
|
|
RUN bash -c "yarn install && yarn ciexport"
|
|
WORKDIR /app
|
|
|
|
# Run the Application
|
|
# There are more arguments required for the application to run,
|
|
# but these should be passed in through the docker-compose.yml file.
|
|
ARG PORT
|
|
EXPOSE ${PORT}
|
|
ENTRYPOINT [ "gunicorn", "-c", "gunicorn-config.py", "src.khoj.main:app" ]
|