Ich versuche, ein Docker bauen für Jenkins anzupassen. Ich befolge unsere docker-compose-Datei und erstelle eine Jenkins-Datei, die jeden Container erstellt und miteinander verknüpft. Das Problem, auf das ich stoße, ist, dass die docker-compose-Dateien einen Kontext deklarieren, in dem sich die Docker-Datei nicht befindet. Soweit ich weiß, wird jenkins den Kontext auf die Position der Docker-Datei setzen, die die zu kopierenden Dateien an einem anderen relativen Speicherort speichert, abhängig davon, ob die jenkins-Datei oder die docker-compose-Datei erstellt wird.Wie setze ich einen benutzerdefinierten Kontext für docker.build in jenkinsfile
Die Ordnerstruktur ist:
workspace
|-docker
|-db
|-Dockerfile
|-entrypoint.sh
Dies ist, wie die Dockerfile den COPY-Befehl für die betreffende Datei
COPY docker/db/entrypoint.sh/
Dies ist, wie mein jenkinsfile erklärt die Datei erstellt. Welche meines Wissens legt den Kontext in diesem Verzeichnis
docker.build("db", "${WORKSPACE}/docker/db")
die Docker-compose Datei erklärt sie mag:
db:
build:
context: .
dockerfile: docker/db/Dockerfile
, die den Kontext an der Wurzel des Projekts setzt.
Gibt es eine Möglichkeit, einer jenkinsfile mitzuteilen, denselben Kontext wie die docker-compose-Datei zu verwenden, damit die COPY-Anweisung der Dockerfile für Jenkins und docker-compose unverändert bleiben kann? Wenn das nicht möglich ist, kennt jemand alternative Lösungen?
Ich bin ich der einzige, der Docker Integration in Jenkins absolut saugt denkt? Ich habe Version 1.14 des Docker-Pipeline-Plugin und es scheint, das zweite Argument wurde bereits wieder entfernt :-( – schneida
@schneida Ich bin 1,13 zu diesem Zeitpunkt ausgeführt, und das Format in dieser Antwort funktioniert immer noch für mich. Sie könnten versuchen Downgrade auf 1.13, um zu sehen, ob es einen Unterschied macht.Andernfalls hat dieses Format auch für mich 'db -f docker/db/Dockerfile' funktioniert, das die Argumente kombiniertund den Kontext weglässt –