Files
collabora-code-docker/Dockerfile
2025-05-07 08:49:45 +08:00

90 lines
3.3 KiB
Docker

FROM ghcr.io/loong64/debian:sid AS build-stage
WORKDIR /build
RUN sed -i "s|deb.debian.org|mirrors.cloud.tencent.com|g" /etc/apt/sources.list.d/debian.sources && \
apt-get update && \
apt-get -y install wget git python3 lsb-release build-essential automake autoconf libtool rsync \
gperf \
python3-dev \
python3-setuptools \
libgss-dev \
bison \
flex \
zip \
gettext \
systemd \
libcurl4-gnutls-dev \
libssl-dev \
libfontconfig-dev \
libnss3-dev \
libcairo2-dev \
libpng-dev \
libmspub-dev \
libzmf-dev \
libcdr-dev \
libfreehand-dev \
python3-polib \
libcppunit-dev \
libcap-dev \
libpam0g-dev \
nodejs \
npm \
python3-lxml
ENV COLLABORA_ONLINE_REPO=https://ghfast.top/https://github.com/CollaboraOnline/online.git
COPY build-poco.sh /build
RUN ./build-poco.sh
COPY build-lo.sh /build
COPY libreoffice-submodule.patch /build
RUN ./build-lo.sh
COPY build-code.sh /build
COPY code-loongarch.patch /build
RUN ./build-code.sh
FROM ghcr.io/loong64/debian:sid AS final-stage
# get the latest fixes
# install LibreOffice run-time dependencies
# install adduser, findutils, openssl and cpio that we need later
# install an editor
# tdf#117557 - Add CJK Fonts to Collabora Online Docker Image
RUN sed -i "s|deb.debian.org|mirrors.cloud.tencent.com|g" /etc/apt/sources.list.d/debian.sources && \
apt-get update && \
apt-get -y install libpng16-16 fontconfig adduser cpio \
findutils nano libcap2-bin openssl \
libubsan1 openssh-client fonts-wqy-zenhei \
fonts-wqy-microhei fonts-droid-fallback fonts-noto-cjk \
libcairo2 libcdr-0.1-1 libfreehand-0.1-1 libgss3 libmspub-0.1-1 libnspr4 libnss3 libpython3.13 libzmf-0.0-0 \
ca-certificates libcurl3t64-gnutls
# copy freshly built LOKit and Collabora Online
COPY --from=build-stage /build/instdir/ /
# copy the shell script which can start Collabora Online (coolwsd)
COPY /start-collabora-online.sh /
# set up Collabora Online (normally done by postinstall script of package)
# Fix permissions
# chown -R cool:cool /opt/ && \
RUN setcap cap_fowner,cap_chown,cap_sys_chroot=ep /usr/bin/coolforkit-caps && \
setcap cap_sys_admin=ep /usr/bin/coolmount && \
adduser --quiet --system --group --home /opt/cool cool && \
rm -rf /opt/cool && \
mkdir -p /opt/cool/child-roots /opt/cool/cache && \
coolwsd-systemplate-setup /opt/cool/systemplate /opt/lokit >/dev/null 2>&1 && \
touch /var/log/coolwsd.log /var/log/coolwsd-ui-cmd.log && \
chown cool:cool /var/log/coolwsd*.log && \
chown -R cool:cool /opt/cool && \
chown -R cool:cool /etc/coolwsd
EXPOSE 9980
# switch to cool user (use numeric user id to be compatible with Kubernetes Pod Security Policies)
USER 100
ENTRYPOINT ["/start-collabora-online.sh"]