diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index aa341c7a9..028d5ddf9 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -11,6 +11,7 @@ on: - master paths: - '.github/workflows/docker-release.yml' + - 'Dockerfile' jobs: docker: diff --git a/Dockerfile b/Dockerfile index 2a0d10eba..80f9f69f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,9 @@ -FROM ubuntu:24.04 +# -------- Build Stage -------- +FROM ubuntu:24.04 AS build ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y\ +RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ file \ @@ -16,20 +17,28 @@ RUN apt-get update && apt-get install -y\ qt6-tools-dev \ qt6-tools-dev-tools -COPY ./CMakeLists.txt ./LICENSE ./README.md /home/servatrice/code/ -COPY ./cmake /home/servatrice/code/cmake -COPY ./common /home/servatrice/code/common -COPY ./servatrice /home/servatrice/code/servatrice +WORKDIR /src +COPY . . +RUN mkdir build && cd build && \ + cmake .. -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 -DWITH_DBCONVERTER=0 && \ + make -j$(nproc) && \ + make install -WORKDIR /home/servatrice/code -WORKDIR build -RUN cmake .. -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 -DWITH_DBCONVERTER=0 &&\ - make &&\ - make install +# -------- Runtime Stage (clean) -------- +FROM ubuntu:24.04 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + libprotobuf32t64 \ + libqt6sql6-mysql \ + libqt6websockets6 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Only copy installed binaries, not source +COPY --from=build /usr/local /usr/local WORKDIR /home/servatrice EXPOSE 4748 - ENTRYPOINT [ "servatrice", "--log-to-console" ]