web-dev-qa-db-fra.com

Créer un conteneur Docker avec Java et Node.js

Je ne sais pas pourquoi je m'attendais à ce que cela fonctionne:

 # Dockerfile    
 FROM node:6
 FROM Java:8

mais cela ne fonctionne pas vraiment - on dirait que la première commande est ignorée et la deuxième commande fonctionne.

Existe-t-il un moyen simple d’installer Node.js et Java dans un conteneur Docker?

En fin de compte, le problème que je tente de résoudre est que je reçois une erreur ENOENT lors de l'exécution de Selenium Webdriver

[20:38:50] W/start - Selenium Standalone server encountered an error: Error: spawn Java ENOENT

Et pour le moment, je suppose que c'est parce que Java n'est pas installé dans le conteneur.

8
Alexander Mills

Vous pouvez utiliser une seule variable FROM par image générée . Essayez d'utiliser node comme image de base et y installer Java.

3
Max Farsikov

Le meilleur moyen pour vous est de prendre Java (qui est officiellement déconseillé et qui vous suggère d’utiliser openjdk image) et d’y installer le noeud.

Alors, commencez par

FROM openjdk:latest

Cela utilisera la dernière image openjdk, qui est 8u151 pour le moment. Puis installez node et les autres dépendances dont vous pourriez avoir besoin:

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh

Vous voudrez peut-être installer des choses telles que grunt par la suite, cela pourrait donc s'avérer utile.

RUN npm install -g grunt grunt-cli

Au total, vous obtiendrez le fichier Dockerfile suivant:

FROM openjdk:latest

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh \
RUN npm install -g grunt grunt-cli

Vous pouvez cloner le fichier Docker de mon compte gitlab ici

13
Alex Karshin

La FROM de votre fichier docker indique simplement au menu fixe à partir de quelle image il doit démarrer la configuration. Vous ne pouvez pas simplement concaténer plusieurs images ensemble. Il existe déjà plusieurs images de conteneur disponibles offrant Java 8 et le noeud JS préinstallés. Je ne souhaite recommander aucune image en particulier, mais je vous dirigerai vers docker-hub pour que vous puissiez effectuer votre propre recherche et utiliser le conteneur qui répond le mieux à vos besoins.

1
Fabian