Comment définir un contexte pour docker.construire en jenkinsfile
Je suis en train d'adapter un menu fixe à construire pour jenkins. Je suis à la suite de notre menu fixe-composition de fichier et je suis de la création d'un Jenkinsfile qui est de la création de chaque conteneur et de les relier ensemble. Le problème, je suis en cours d'exécution en est que le docker-composer les fichiers de déclarer un contexte qui n'est pas là où le Dockerfile. Comme je le comprends, jenkins va définir le contexte où le Dockerfile est, ce qui met les fichiers à copier dans un autre emplacement relatif selon que l'jenkinsfile ou menu fixe-composition de fichier.
La structure de dossier est:
workspace
|-docker
|-db
|-Dockerfile
|-entrypoint.sh
C'est la façon dont le Dockerfile déclare l'instruction de COPIE pour le fichier en question
COPY docker/db/entrypoint.sh /
C'est comment mon jenkinsfile génère le fichier. Qui, à ma connaissance, met le contexte de répertoire
docker.build("db", "${WORKSPACE}/docker/db")
le docker-composition de fichier déclare comme:
db:
build:
context: .
dockerfile: docker/db/Dockerfile
qui met en contexte à la racine du projet.
Est-il possible de dire à un jenkinsfile d'utiliser le même contexte que le docker-composition de fichier, de sorte que le Dockerfile de l'instruction de COPIE peut rester stable et valable pour les deux Jenkins et docker-composer? Si ce n'est pas possible, personne ne sait de toute solution alternative?
OriginalL'auteur Julian | 2016-07-29
Vous devez vous connecter pour publier un commentaire.
Il s'avère que j'ai été en tirant une précédente version (1.6) de la docker-pipeline-plugin. La fonction en question a été mis à jour depuis (1.7) pour permettre à la deuxième paramètre de désigner un Dockerfile emplacement en dehors du contexte.
L'énoncé mis à jour dans mon Jenkinsfile est:
Et ce qui permet à mon conteneur des à construire, sans modifier le contexte prévu de le développeur de docker-composer ou Dockerfiles.
Je suis en cours d'exécution de 1,13 à ce point, et le format dans cette réponse, c'est encore de travailler pour moi. Vous pouvez essayer de la rétrogradation à la 1.13 pour voir si cela fait une différence. Sinon, ce format a également travaillé pour moi
db -f docker/db/Dockerfile
qui combine les arguments, et laisse de côté le contexteOriginalL'auteur Julian
Juste Omnit la
context
point surdocker-compose
donc la valeur par défaut est l'emplacement de la Dockerfile.OriginalL'auteur Ohmen
Syntaxe suivante devrait fonctionner:
débardeur.construire('ContainerTag"-f DockerFilePath Contexte"
exemple: menu fixe.construire('quay.io/AppContianer:1.0.0' '-f dockerfileDir/Dockerfile.test dockerfileDir')
OriginalL'auteur user6058180
La méthode build() construit le Dockerfile dans le répertoire courant par défaut. Cela peut être substituée par la fourniture d'un chemin d'accès au répertoire contenant un Dockerfile que le deuxième argument de la méthode build (), par exemple:
OriginalL'auteur andy.wang