123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- # syntax=docker/dockerfile:1
- # This dockerfile builds an editable install of Synapse.
- #
- # Used by `complement.sh`. Not suitable for production use.
- ARG PYTHON_VERSION=3.9
- ###
- ### Stage 0: generate requirements.txt
- ###
- # We hardcode the use of Debian bookworm here because this could change upstream
- # and other Dockerfiles used for testing are expecting bookworm.
- FROM docker.io/library/python:${PYTHON_VERSION}-slim-bookworm
- # Install Rust and other dependencies (stolen from normal Dockerfile)
- # install the OS build deps
- RUN \
- --mount=type=cache,target=/var/cache/apt,sharing=locked \
- --mount=type=cache,target=/var/lib/apt,sharing=locked \
- apt-get update -qq && apt-get install -yqq \
- build-essential \
- libffi-dev \
- libjpeg-dev \
- libpq-dev \
- libssl-dev \
- libwebp-dev \
- libxml++2.6-dev \
- libxslt1-dev \
- openssl \
- zlib1g-dev \
- git \
- curl \
- gosu \
- libjpeg62-turbo \
- libpq5 \
- libwebp7 \
- xmlsec1 \
- libjemalloc2 \
- && rm -rf /var/lib/apt/lists/*
- ENV RUSTUP_HOME=/rust
- ENV CARGO_HOME=/cargo
- ENV PATH=/cargo/bin:/rust/bin:$PATH
- RUN mkdir /rust /cargo
- RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable --profile minimal
- # Make a base copy of the editable source tree, so that we have something to
- # install and build now — even though it's going to be covered up by a mount
- # at runtime.
- COPY synapse /editable-src/synapse/
- COPY rust /editable-src/rust/
- # ... and what we need to `pip install`.
- COPY pyproject.toml poetry.lock README.rst build_rust.py Cargo.toml Cargo.lock /editable-src/
- RUN pip install poetry
- RUN poetry config virtualenvs.create false
- RUN cd /editable-src && poetry install --extras all
- # Make copies of useful things for inspection:
- # - the Rust module (must be copied to the editable source tree before startup)
- # - poetry.lock is useful for checking if dependencies have changed.
- RUN cp /editable-src/synapse/synapse_rust.abi3.so /synapse_rust.abi3.so.bak
- RUN cp /editable-src/poetry.lock /poetry.lock.bak
- ### Extra setup from original Dockerfile
- COPY ./docker/start.py /start.py
- COPY ./docker/conf /conf
- EXPOSE 8008/tcp 8009/tcp 8448/tcp
- ENTRYPOINT ["/start.py"]
- HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \
- CMD curl -fSs http://localhost:8008/health || exit 1
|