Waarom zou de gastheer zich deterministischer kunnen gedragen dan een dokwerkerscontainer?

stemmen
40

We gebruiken Docker om de bouwomgeving goed te definiëren en te helpen met deterministische builds, maar op mijn machine krijg ik een kleine verandering in de bouwresultaten met Docker, maar niet wanneer ik Docker niet gebruik.

Ik heb vrij uitgebreid getest en heb geen ideeën meer :(

Ik heb getest op de volgende systemen:

  • A: Mijn nieuwe PC zonder Docker
  • AD1: Mijn nieuwe PC met Docker, met behulp van onze Dockerfile gebaseerd op ubuntu:18.04 samengesteld een jaar geleden
  • AD2: Mijn nieuwe PC met Docker, met behulp van onze Dockerfile op basis van ubuntu:19:10 nu samengesteld
  • B: Mijn laptop (die ik naar mijn nieuwe PC had gekopieerd) zonder Docker
  • BD: Mijn laptop met Docker
  • CD1: De laptop van de medewerker met Docker, met behulp van onze Dockerfile op basis van ubuntu:18.04 samengesteld een jaar geleden
  • CD2: Laptop van collega's met Docker, met behulp van onze Dockerfile op basis van ubuntu:19:10 nu samengesteld
  • DD: Een Digitale Oceaan VPS met onze Dockerfile op basis van ubuntu:18.04 nu samengesteld

In alle scenario's kregen we een van de twee bouwresultaten die ik variant X en Y zal noemen.

  • We hebben variant X met A, B, CD1, CD2 en DD.
  • We hebben variant Y met AD1, AD2 en BD.

Het probleem blijft 100% reproduceerbaar sinds verschillende releases van onze Android app. Het ging niet weg toen ik mijn Docker van 19.03.6 naar 19.03.8 updatete om deze te laten overeenkomen met de versie van mijn collega. We hadden toen allebei Ubuntu 19.10 en ik krijg nu het probleem met Ubuntu 20.04.

Ik kloonde ons project altijd vers in een nieuwe map, gebruikte wanordelijkheden om sorteerproblemen van het bestandssysteem te elimineren en monteerde de map in de dockercontainer.

Ik betwijfel of het relevant is, maar we gebruiken deze Dockerfile:

FROM ubuntu:18.04

RUN dpkg --add-architecture i386 && \
    apt-get update -y && \
    apt-get install -y software-properties-common && \
    apt-get update -y && \
    apt-get install -y wget \
            openjdk-8-jre-headless=8u162-b12-1 \
            openjdk-8-jre=8u162-b12-1 \
            openjdk-8-jdk-headless=8u162-b12-1 \
            openjdk-8-jdk=8u162-b12-1 \
            git unzip && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get autoremove -y && \
    apt-get clean

# download and install Android SDK
ARG ANDROID_SDK_VERSION=4333796
ENV ANDROID_HOME /opt/android-sdk
RUN mkdir -p /opt/android-sdk && cd /opt/android-sdk && \
    wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip && \
    unzip *tools*linux*.zip && \
    rm *tools*linux*.zip && \
    yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

Ook hier zijn de bouwinstructies die ik uitvoer en krijg ik verschillende resultaten. Het verschil zelf is hier te vinden.


Edit: Ik heb het ook als een bug op de docker repo ingediend.

De vraag is gesteld op 22/05/2020 om 06:40
bron van user
In andere talen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more