Files
yacy_search_server/docker/Dockerfile.alpine
T
Michael Meier a5a1f44441 Docker: Fix YaCy version determination
The .dockerignore file was preventing the .git directory from being
copied into the context during container builds, which prevented ant
from determining the YaCy version by running a few git commands.

This fixes containerized YaCy peer's version showing up as:
yacy_v1.941_fatal: not a git repository (or any of the parent directories):
.gitfatal: not a git repository (or any of the parent directories):
.git_fatal: not a git repository (or any of the parent directories): .git
2026-06-04 22:18:23 +02:00

79 lines
2.5 KiB
Docker

# Alpine Docker image for YaCy
# build with
# docker build -t yacy/yacy_search_server:alpine -f Dockerfile.alpine ../
# run with
# docker run -d --name yacy -p 8090:8090 -p 8443:8443 -v yacy_data:/opt/yacy_search_server/DATA --log-opt max-size=200m --log-opt max-file=2 yacy/yacy_search_server:alpine
## builder image
FROM eclipse-temurin:21-jdk-alpine-3.21 AS builder
# Install needed packages not in base image
RUN apk add --no-cache curl git apache-ant
# set current working dir & copy sources
WORKDIR /opt
COPY . /opt/yacy_search_server/
# .git dir deleted here because .git is needed during the build to deterime the version,
# but isn't required at runtime
RUN ant compile -f /opt/yacy_search_server/build.xml \
&& rm -fr /opt/yacy_search_server/.git
# Set initial admin password: "yacy" (encoded with custom yacy md5 function net.yacy.cora.order.Digest.encodeMD5Hex())
RUN sed -i "/adminAccountBase64MD5=/c\adminAccountBase64MD5=MD5:8cffbc0d66567a0987a4aba1ec46d63c" /opt/yacy_search_server/defaults/yacy.init && \
sed -i "/adminAccountForLocalhost=/c\adminAccountForLocalhost=false" /opt/yacy_search_server/defaults/yacy.init && \
sed -i "/server.https=false/c\server.https=true" /opt/yacy_search_server/defaults/yacy.init
## build final image
FROM surnet/alpine-wkhtmltopdf:3.21.2-0.12.6-small AS wkhtmltopdf
FROM eclipse-temurin:21-jre-alpine-3.21 AS app
RUN apk add --no-cache \
imagemagick \
xvfb \
ghostscript \
# Install dependencies for wkhtmltopdf
libstdc++ \
libx11 \
libxrender \
libxext \
libssl3 \
ca-certificates \
fontconfig \
freetype \
ttf-dejavu \
ttf-droid \
ttf-freefont \
ttf-liberation \
# more fonts
&& apk add --no-cache --virtual .build-deps \
msttcorefonts-installer \
# Install microsoft fonts
&& update-ms-fonts \
&& fc-cache -f \
# Clean up when done
&& rm -rf /tmp/* \
&& apk del .build-deps
# Copy wkhtmltopdf files from docker-wkhtmltopdf image
COPY --from=wkhtmltopdf /bin/wkhtmltopdf /bin/wkhtmltopdf
# copy YaCy to app image
RUN addgroup yacy && adduser -S -G yacy -H -D yacy
WORKDIR /opt
COPY --chown=yacy:yacy --from=builder /opt/yacy_search_server /opt/yacy_search_server
# Expose HTTP and HTTPS default ports
EXPOSE 8090 8443
# Set data volume: yacy data and configuration will persist even after container stop or destruction
VOLUME ["/opt/yacy_search_server/DATA"]
# Next commands run as yacy as non-root user for improved security
USER yacy
# Start yacy as a foreground process (-f) to display console logs and to wait for yacy process
CMD ["/bin/sh","/opt/yacy_search_server/startYACY.sh","-f"]