Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/06/2020, à 11:19

noirdesir

dockfile

Bonjour tous le monde,
Je veux créer un dockfiles mais j'ai des soucis de scripts

FROM _______

RUN apt update \
&& apt-get install git -y \
&& apt-get install lsb-release -y \
&& apt install curl -y \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'\
&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& curl -sSL 'http://keyserver.ubuntu.com/pks/lookup? … FBAB17C654' | sudo apt-key add - \
&& sudo apt update -y \
&& sudo apt install ros-melodic-desktop-full -y -8\
&& echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc \
&& source ~/.bashrc \
&& source /opt/ros/melodic/setup.bash \
&& apt-get zsh -y \
&& echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc \
&& source ~/.zshrc \
&& apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential \
&& apt install python-rosdep -y \
&& rosdep init -y \
&& rosdep update -y \

Lors de la vérification du script j'ai soucis un soucis sur la ligne :

[WARNING]: Empty continuation line found in:
    RUN apt update && apt-get install git -y && apt-get install lsb-release -y && apt install curl -y && sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 CMD npm run Start 
[WARNING]: Empty continuation lines will become errors in a future release.

Hors ligne

#2 Le 16/06/2020, à 12:33

Vobul

Re : dockfile

Ne mets pas de commentaires ou de lignes vides entre tes lignes. Et utilise les balises code pour du code. Sinon y'a plein de trucs qui vont pas dans ton Dockerfile :

- tu mixes apt-get et apt
- apt-get update n'a pas besoin de -y
- pas de DEBIAN_FRONTEND=noninteractive
- pas de apt-get clean et remove cache
- les paquets à installer sont dispersés dans plusieurs commandes
- utilisation de sudo alors qu'on est root
- parfois un -y, parfois pas

bref, c'est le bordel ton truc.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 16/06/2020, à 13:05

noirdesir

Re : dockfile

Je te remercie pour ces renseignement,
J'ai corrigé, effectivement j'avais un espace entre FROM et RUN
FROM _____
RUN apt-get update \
&& apt-get install -y git lsb-release curl \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'\
&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& curl -sSL 'http://keyserver.ubuntu.com/pks/lookup? … FBAB17C654' |  apt-key add - \
&& apt update \
&& apt install ros-melodic-desktop-full -y \
&& echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc \
&& source ~/.bashrc \
&& source /opt/ros/melodic/setup.bash \
&& apt-get zsh \
&& echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc \
&& source ~/.zshrc \
&& apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential \
&& apt install python-rosdep \
&& rosdep init \
&& rosdep update\
&& apt-get clean \
run npm install
cmd npm run start

J'ai un autre soucis, un moment pendant l'installation, il me demande mon geographic area, je pensais que le -y permettait d'éviter les dialogues. Comment dois je changer mon dockfile pour que je n'ai plus à le rentrer :

debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

Dernière modification par noirdesir (Le 16/06/2020, à 13:45)

Hors ligne

#4 Le 16/06/2020, à 18:23

Vobul

Re : dockfile

Voir mon troisième point.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#5 Le 17/06/2020, à 11:16

noirdesir

Re : dockfile

Bonjour
J'ai trouvé cette commande qui résout ses problème d'installaton de tzdata, la solution non interative ne semblait pas fonctionner.

FROM _____________________________
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update -yq \
&& apt-get install zsh git lsb-release curl -yq \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'\
&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& curl -sSL 'http://keyserver.ubuntu.com/pks/lookup? … FBAB17C654' | apt-key add - \
&& apt update \
&& apt-get -y install ros-melodic-desktop-full  \
&& echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc \
&& source ~/.bashrc \
# && source /opt/ros/melodic/setup.bash \
# && echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc \
# && source ~/.zshrc \
# && apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential -yq \
# && apt install python-rosdep -yq \
# && rosdep init \
# && rosdep update \
&& apt-get clean -y
ADD . /app/
WORKDIR /app
EXPOSE 2368
VOLUME /app/logs

/bin/sh: 1: source: not found
The command '/bin/sh -c apt-get update -yq && apt-get install zsh git lsb-release curl -yq && sh -c 'echo "deb [url]http://packages.ros.org/ros/ubuntu[/url] $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 && curl -sSL '[url]http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654[/url]' | apt-key add - && apt update && apt-get -y install ros-melodic-desktop-full  && echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc && apt-get clean -y' returned a non-zero code: 127

Du coup, j'ai réussi à compiler jusqu'à la balise source...
Je ne comprend l'erreur qui est produite.

Dernière modification par noirdesir (Le 17/06/2020, à 17:04)

Hors ligne

#6 Le 17/06/2020, à 12:32

kamaris

Re : dockfile

source est un bashisme -> à remplacer par « . ».

Hors ligne

#7 Le 17/06/2020, à 13:26

noirdesir

Re : dockfile

J'avais vu que l'on pouvait modifier le lien symbolique avec ls dans le run, mailheureusement pour zsh, je ne peux pas modifier quelques choses qui n'existe pas ?
Puisque je ne l'ai pas encore créé?

Avec cette commande là.

RUN rm /bin/sh && ln -s /bin/bash /bin/sh


Manifestement soit je l'ai mal implémenté car je me fais insulté en code 2


/bin/sh: 13: /root/.bashrc: shopt: not found
/bin/sh: 21: /root/.bashrc: shopt: not found
/bin/sh: 1: /opt/ros/melodic/setup.bash: Bad substitution
/bin/sh: 7: /opt/ros/melodic/setup.bash: builtin: not found
/bin/sh: 8: .: Can't open /setup.sh

FROM aipprimecaoccitanie/coppeliasim_edu:18.04
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get update -yq \
&& apt-get install zsh git lsb-release curl -yq \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'\
&& apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | apt-key add - \
&& apt update \
&& apt-get -y install ros-melodic-desktop-full  \
# && echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc \
&& echo ". /opt/ros/melodic/setup.bash" >> ~/.bashrc \
&& . ~/.bashrc \
&& . /opt/ros/melodic/setup.bash \
# && echo ". /opt/ros/melodic/setup.zsh" >> ~/.zshrc \
&& . ~/.zshrc \
# && apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential -yq \
# && apt install python-rosdep -yq \
# && rosdep init \
# && rosdep update \
&& apt-get clean -y
ADD . /app/
WORKDIR /app
EXPOSE 2368
VOLUME /app/logs

Dernière modification par noirdesir (Le 17/06/2020, à 13:43)

Hors ligne

#8 Le 17/06/2020, à 14:02

kamaris

Re : dockfile

Je ne sais pas quelles sont les contraintes pour construire ce type de fichiers, mais ça m'a tout l'air de marcher sur la tête ton histoire…
Soit tu utilises un shell posix et tu fais du posix, soit tu fais du bash ou autre et alors tu utilises bash ou autre, et cela sans toucher à ce qui se trouve dans /usr/bin (ou /bin, ou tout autre répertoire système) !

Dernière modification par kamaris (Le 17/06/2020, à 14:04)

Hors ligne

#9 Le 17/06/2020, à 17:08

noirdesir

Re : dockfile

Salut
En faites pour améliorer l'environnement ros, on installe zsh (qui permet notamment la coloration des des fichiers etc).
Les lignes que j'ai mises, sont pour l'installation complète conseiller sur le site de ros.
Il faut installer ce module zsh.
Quant à shell, j'ai vu ça dans dockfiles, mais j'ai dû mal à voir comment l'utiliser dans mon cas, à la fois pour le bash et le zsh.
Cordialement.

Hors ligne

#10 Le 17/06/2020, à 17:38

kamaris

Re : dockfile

Ce que je peux te dire, c'est que là, tes problèmes viennent de ce que tu essaies d'exécuter du code bash avec un interpréteur qui ne connait pas ce langage.
Donc soit tu trouves un moyen propre d'indiquer bash comme interpréteur (changer les liens symboliques dans /bin n'est pas un moyen propre big_smile), soit tu supprimes le code bash et / ou tu le remplaces autant que possible par du code shell posix.

Hors ligne

#11 Le 18/06/2020, à 00:27

Vobul

Re : dockfile

kamaris a raison, les commands sont exécutées avec "sh", et non "bash".


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#12 Le 24/06/2020, à 10:16

noirdesir

Re : dockfile

Salut Vobul
Est ce que tu aurais un lien (intéressant, je ne connais pas du tout ce de chose) ou m'expliquer rapidement comment passer de l'un à l'autre dans mon cas, j'ai ces deux chose à mettre à jour le bash en rajoutant le lien, et le zsh à mettre à jour aussi.

Hors ligne

#13 Le 24/06/2020, à 17:37

Vobul

Re : dockfile

soit tu utilises "sh -c 'bash command'" soit tu peux te poser la question de l'utilité de sourcer un bashrc ET un zshrc dans un dockerfile avec un shell sh...


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne