When connecting to Docker service, first the `backend` container will be tried with TCP, then an Unix Socket will be used as fallback. The Unix Socket is put in Libervia local dir which is a volume shared between containers. This way D-Bus can be used with a remote backend, or the backend can be run locally (notably during build when accounts creation or other settings must be done via Libervia CLI).
54 lines
2.8 KiB
Docker
54 lines
2.8 KiB
Docker
FROM debian:bullseye-slim
|
|
|
|
LABEL maintainer="Goffi <tmp_dockerfiles@goffi.org>"
|
|
|
|
ARG REVISION
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN echo "Building image for Libervia ${REVISION:-dev}" && \
|
|
apt-get update && apt-get upgrade -y && \
|
|
apt-get install -y --no-install-recommends locales python3-dev python3-venv python3-wheel mercurial libxml2-dev libxslt-dev libcairo2-dev libjpeg-dev libgirepository1.0-dev libdbus-1-dev libdbus-glib-1-dev dbus-x11 cmake && \
|
|
\
|
|
# will be used to put many Libervia specific data
|
|
mkdir -p /usr/share/libervia/certificates && \
|
|
addgroup tls-cert --gid 9999 && \
|
|
chown :tls-cert /usr/share/libervia/certificates && \
|
|
chmod 2770 /usr/share/libervia/certificates && \
|
|
# it's better to have a dedicated user
|
|
useradd -m libervia && adduser libervia tls-cert && \
|
|
# we'll put all source there to have an easy mount point
|
|
mkdir /src && chown libervia:libervia /src && \
|
|
\
|
|
# we need UTF-8 locale
|
|
sed -i "s/# en_US.UTF-8/en_US.UTF-8/" /etc/locale.gen && locale-gen
|
|
|
|
ENV LC_ALL en_US.UTF-8
|
|
ENV DOCKER_LIBERVIA_REV=${REVISION:-dev}
|
|
|
|
COPY --chown=root:root session.conf /usr/share/dbus-1/session.conf
|
|
|
|
WORKDIR /home/libervia
|
|
USER libervia
|
|
|
|
RUN python3 -m venv libervia_env && libervia_env/bin/pip install -U pip wheel && cd /src && \
|
|
# We install thoses packages in editable mode, so we can replace them easily with volumes.
|
|
# We need to move *.egg-info (generated by pip) out of src dirs, otherwise mounting
|
|
# local repos without it them cause troubles
|
|
hg clone https://repos.goffi.org/urwid-satext && ~/libervia_env/bin/pip install -e urwid-satext && \
|
|
mv urwid-satext/urwid_satext.egg-info ~/libervia_env/lib/python3.*/site-packages && \
|
|
hg clone https://repos.goffi.org/sat_tmp -u "${REVISION:-tip}" && ~/libervia_env/bin/pip install -e sat_tmp && \
|
|
mv sat_tmp/sat_tmp.egg-info ~/libervia_env/lib/python3.*/site-packages && \
|
|
hg clone https://repos.goffi.org/libervia-templates && ~/libervia_env/bin/pip install -e libervia-templates && \
|
|
mv libervia-templates/libervia_templates.egg-info ~/libervia_env/lib/python3.*/site-packages && \
|
|
hg clone https://repos.goffi.org/libervia-media && \
|
|
hg clone https://repos.goffi.org/libervia-backend -u "${REVISION:-tip}" && ~/libervia_env/bin/pip install -e 'libervia-backend[SVG]' && \
|
|
mv libervia-backend/libervia_backend.egg-info ~/libervia_env/lib/python3.*/site-packages && \
|
|
mkdir -p /home/libervia/.local/share/libervia
|
|
|
|
ENV DBUS_SESSION_BUS_ADDRESS="tcp:host=backend,port=55555,family=ipv4;unix:path=/home/libervia/.local/share/libervia/dbus_socket"
|
|
ENV PATH=/home/libervia/libervia_env/bin:$PATH
|
|
|
|
COPY --chown=root:root libervia.conf /etc/_libervia.conf
|
|
COPY --chown=libervia:libervia scripts/entrypoint.sh /home/libervia/
|
|
|
|
ENTRYPOINT ["/home/libervia/entrypoint.sh"]
|