J'essaie de créer une image mongo 4.4 basée sur l'image officielle Dockerfile mais je rencontre un problème avec systemctl introuvable. L'image elle-même a une ligne pour la supprimer après l'installation, mais vous ne savez pas d'où elle vient. Des idées?
Setting up mongodb-org-database-tools-extra (4.4.0) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-1) ... Setting up libkrb5support0:amd64 (1.16-2ubuntu0.1) ... Setting up krb5-locales (1.16-2ubuntu0.1) ... Setting up libkeyutils1:amd64 (1.5.9-9.2ubuntu2) ... Setting up libk5crypto3:amd64 (1.16-2ubuntu0.1) ... Setting up libkrb5-3:amd64 (1.16-2ubuntu0.1) ... Setting up libgssapi-krb5-2:amd64 (1.16-2ubuntu0.1) ... Setting up libcurl4:amd64 (7.58.0-2ubuntu3.10) ... Setting up mongodb-database-tools (100.1.1) ... Setting up mongodb-org-mongos (4.4.0) ... Setting up mongodb-org-tools (4.4.0) ... Setting up mongodb-org-server (4.4.0) ... /var/lib/dpkg/info/mongodb-org-server.postinst: 43: /var/lib/dpkg/info/mongodb-org-server.postinst: systemctl: not found dpkg: error processing package mongodb-org-server (--configure): installed mongodb-org-server package post-installation script subprocess returned error exit status 127 Setting up mongodb-org-shell (4.4.0) ... dpkg: dependency problems prevent configuration of mongodb-org: mongodb-org depends on mongodb-org-server; however: Package mongodb-org-server is not configured yet. dpkg: error processing package mongodb-org (--configure): dependency problems - leaving unconfigured Processing triggers for libc-bin (2.27-3ubuntu1.2) ... Errors were encountered while processing: mongodb-org-server mongodb-org [91mE: Sub-process /usr/bin/dpkg returned an error code (1) [0mThe command '/bin/sh -c set -x && export DEBIAN_FRONTEND=noninteractive && apt-get update && echo "mongodb-org hold" | dpkg --set-selections && echo "mongodb-org-server hold" | dpkg --set-selections && echo "mongodb-org-shell hold" | dpkg --set-selections && echo "mongodb-org-mongos hold" | dpkg --set-selections && echo "mongodb-org-tools hold" | dpkg --set-selections && apt-get install -y ${MONGO_PACKAGE}=$MONGO_VERSION ${MONGO_PACKAGE}-server=$MONGO_VERSION ${MONGO_PACKAGE}-shell=$MONGO_VERSION ${MONGO_PACKAGE}-mongos=$MONGO_VERSION ${MONGO_PACKAGE}-tools=$MONGO_VERSION && rm -f /usr/local/bin/systemctl && rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/mongodb && mv /etc/mongod.conf /etc/mongod.conf.orig' returned a non-zero code: 100
3 Réponses :
echo ln to / bin / systemctl résout le problème.
Pour être précis
RUN ln -s /bin/echo /bin/systemctl RUN apt-get -qqy install mongodb-org
La réponse FL3SH fonctionne mais pour transmettre le sens plus efficacement, vous pouvez créer un lien symbolique de /bin/systemctl
vers /bin/true
.
/bin/true
est une commande qui renvoie toujours 0 (la valeur de vérité du shell) pour ne pas échouer. C'est un moyen standard d'indiquer que vous souhaitez renvoyer true. Voir aussi cet article SO
La commande que vous devez ajouter dans le Dockerfile est:
echo "test" echo $?
ou
RUN ln -s /bin/true /bin/systemctl
L'effet est que vous trompez le script de post-installation en appelant /bin/true
au lieu de /bin/systemctl
Vous pouvez trouver la même astuce dans la ligne 91 officielle de mongodb Dockerfile 4.4 que haytham a liée dans sa description.
/bin/echo
fonctionne aussi bien que /bin/true
car echo renvoie également 0. Vous pouvez l'essayer en faisant
RUN ln -s /bin/true /usr/local/bin/systemctl
Et vous verrez 0 comme résultat du deuxième echo
.
Pouvez-vous partager le Dockerfile que vous utilisez et les étapes minimales à reproduire? Merci!
Dockerfile en question! Pour reproduire, vous devez créer l'image.