arkivverket / noark5-tjenestegrensesnitt-standard

6 stars 11 forks source link

Bygg i docker #272

Open rolfrander opened 3 years ago

rolfrander commented 3 years ago

Hei, dette er innspill til byggeprosessen, ikke innholdet i teksten. Jeg har laget en Dockerfile med det jeg tror er nødvendige avhengigheter for å klare å bygge pdf/html (jeg fikk det i hvert fall til å virke med dette). Kanskje nyttig for andre også.

FROM openjdk:17-buster

ENV PLANTUML_VERSION 1.2021.6
ENV LANG en_US.UTF-8

RUN apt update

RUN apt install -y graphviz curl git make
RUN apt install -y --no-install-recommends python2-minimal python3-minimal
RUN apt install -y --no-install-recommends pandoc libxml2-utils dblatex xmlto texlive-lang-european

# install plant manually to avoid dragging entire java/X11 dependency tree
RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o /usr/local/lib/plantuml.jar 
RUN echo "#!/bin/bash" >> /usr/local/bin/plantuml ; echo 'java -jar /usr/local/lib/plantuml.jar "$@"' >> /usr/local/bin/plantuml
RUN chmod +x /usr/local/bin/plantuml
petterreinholdtsen commented 3 years ago

[rolfrander]

Hei, dette er innspill til byggeprosessen, ikke innholdet i teksten. Jeg har laget en Dockerfile med det jeg tror er nødvendige avhengigheter for å klare å bygge pdf/html (jeg fikk det i hvert fall til å virke med dette). Kanskje nyttig for andre også.

Takk for forslag. Har et spørsmål om plantuml:

install plant manually to avoid dragging entire java/X11 dependency tree

RUN curl -L https://sourceforge.net/projects/plantuml/files/plantuml.${PLANTUML_VERSION}.jar/download -o /usr/local/lib/plantuml.jar RUN echo "#!/bin/bash" >> /usr/local/bin/plantuml ; echo 'java -jar /usr/local/lib/plantuml.jar "$@"' >> /usr/local/bin/plantuml RUN chmod +x /usr/local/bin/plantuml

Hva konkret er det du forsøker å unngå her? Kan det unngås ved å installere default-jre-headless i stedet for default-jre?

Jeg tror det er en dårlig ide å laste ned binære fra Internet utenom Debians pakkespeil, og håper dermed utfordringe kan løses på en annen måte.

-- Vennlig hilsen Petter Reinholdtsen

rolfrander commented 3 years ago

Hehe, godt spørsmål. Jeg er enig i prinsippet om å ikke laste ned binære filer direkte fra internett.

Det jeg forsøker å unngå er dette:

# apt-get install -s --no-install-recommends plantuml
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ant ca-certificates-java default-jre default-jre-headless java-common java-wrappers libapache-pom-java libasound2
  libasound2-data libavalon-framework-java libbatik-java libcommons-io-java libcommons-logging-java libcommons-parent-java
  libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libel-api-java libfontbox2-java libfop-java
  libgif7 libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libjaxp1.3-java libjlatexmath-java libjsp-api-java
  libllvm7 libnspr4 libnss3 libpciaccess0 libpcsclite1 libqdox-java libsensors-config libsensors5 libservlet-api-java
  libservlet3.1-java libwebsocket-api-java libx11-xcb1 libxalan2-java libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0
  libxcb-sync1 libxdamage1 libxerces2-java libxfixes3 libxml-commons-external-java libxml-commons-resolver1.1-java
  libxmlgraphics-commons-java libxshmfence1 libxtst6 libxxf86vm1 openjdk-11-jre openjdk-11-jre-headless
Suggested packages:
  ant-doc default-jdk | java-compiler | java-sdk libasound2-plugins alsa-utils libavalon-framework-java-doc librhino-java
  libcommons-io-java-doc libcommons-logging-java-doc libexcalibur-logkit-java liblog4j1.2-java pciutils pcscd libqdox-java-doc
  junit lm-sensors libxalan2-java-doc libbsf-java libxsltc-java libxerces2-java-doc libxml-commons-resolver1.1-java-doc
  libxmlgraphics-commons-java-doc libnss-mdns fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei
  | fonts-wqy-zenhei fonts-indic
Recommended packages:
  ant-optional icc-profiles-free libsaxon-java libatk-wrapper-java-jni fonts-dejavu-extra
The following NEW packages will be installed:
  ant ca-certificates-java default-jre default-jre-headless java-common java-wrappers libapache-pom-java libasound2
  libasound2-data libavalon-framework-java libbatik-java libcommons-io-java libcommons-logging-java libcommons-parent-java
  libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libel-api-java libfontbox2-java libfop-java
  libgif7 libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libjaxp1.3-java libjlatexmath-java libjsp-api-java
  libllvm7 libnspr4 libnss3 libpciaccess0 libpcsclite1 libqdox-java libsensors-config libsensors5 libservlet-api-java
  libservlet3.1-java libwebsocket-api-java libx11-xcb1 libxalan2-java libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0
  libxcb-sync1 libxdamage1 libxerces2-java libxfixes3 libxml-commons-external-java libxml-commons-resolver1.1-java
  libxmlgraphics-commons-java libxshmfence1 libxtst6 libxxf86vm1 openjdk-11-jre openjdk-11-jre-headless plantuml

Jeg kan ikke apt godt nok til å vite hvordan jeg hinter om å bruke jre-headless...

I et forsøk på å finne ut hva som var beste måte å installere java i docker ble jeg så forvirret at jeg endte opp med å basere meg på standard openjdk-image utelukkende for å ha java tilgjengelig for plantuml. Men det ser ikke ut til at apt i det imaget vet om at jre er installert, så derfor vil plantuml dra med seg hele.

petterreinholdtsen commented 3 years ago

[rolfrander]

Det jeg forsøker å unngå er dette:

OK.

Tenker det må være mulig å trimme den listen litt, men rekker ikke finne løsning i kveld.

Tenker 'apt-cache dotty plantuml > plantuml.dot; dotty plantuml.dot' bør kunne gi ideer til hva som kan trimmes av avhengigheter.

-- Vennlig hilsen Petter Reinholdtsen

petterreinholdtsen commented 3 years ago

[Petter Reinholdtsen]

Tenker det må være mulig å trimme den listen litt, men rekker ikke finne løsning i kveld.

Ser ut til at problemet er at plantuml har notert avhengighet på default-jre og ikke godtar default-jre-headless som alternativ. Jeg har bedt om at Debian-pakken endres i <URL: https://bugs.debian.org/988908 >.

Den enkleste måten å unngå problemet er nok å bruke equivs til å lage en dummy-pakke som blokkerer for installasjon av default-jre:

chroot /some/chroot apt install -y --no-install-recommends equivs cat > /some/chroot/tmp/dummy-default-jre-control <<EOF Section: misc Priority: optional

Package: dummy-default-jre Provides: default-jre Description: Placeholder to avoid pulling in default-jre EOF chroot /some/chroot equivs-build /tmp/dummy-default-jre-control ls /some/chroot chroot /some/chroot dpkg -i dummy-default-jre_1.0_all.deb

Men jeg anbefaler ikke denne løsningen, jeg vil heller foreslå å ta utgangspunkt i et enkelt Debian-docker-avtrykk og så bruke openjdk fra Debian.

-- Vennlig hilsen Petter Reinholdtsen

rolfrander commented 3 years ago

[Petter Reinholdtsen] Men jeg anbefaler ikke denne løsningen, jeg vil heller foreslå å ta utgangspunkt i et enkelt Debian-docker-avtrykk og så bruke openjdk fra Debian.

Her falt jeg av, jeg forstår ikke hvordan skal dette kunne omgå koblingen fra plantuml til default-jre, men her er jeg langt utenfor min kunnskap om apt/dpkg...

Uansett, dette er grunnen til at jeg tok utgangspunkt i et standard java-docker-avtrykk og lastet ned plantuml.jar med curl...