2017-08-19 5 views
0

Ich habe versucht, diese Anwendung (https://github.com/DivanteLtd/open-loyalty/) in Google Cloud mit Kubernetes zu implementieren. Die zum Bereitstellen dieser Anwendung verwendete Instanz enthält Debian v4.9 als Betriebssystem. Und wir haben Docker, GCloud, Kubernetes und Kompose als Tools für die Bereitstellung installiert. Ich habe zwei Docker-Images für das Frontend und Backend erstellt und diese mit der Docker-Compose-Datei verknüpft. Jetzt im Front-End-Modell, wir verwendet (node: 5) Bild von Docker Hub in Dockerfile des Frontends. Unten ist die Docker-Datei des Frontend-Containers angegeben.Garn Fehler beim Bereitstellen der Anwendung in der Google Cloud

FROM node:5 

RUN apt-get update \ 
    && apt-get install -y ruby-full rubygems \ 
    && gem instal sass 
RUN npm install -g gulp node-sass yarn 
COPY . /var/www 
WORKDIR /var/www 
EXPOSE 3000 

CMD npm rebuild node-sass && yarn install && gulp config --prod && gulp compile && gulp prod 

I auch versucht, unter Verwendung von (node: 6) und (node: 7) als Bilder, aber fälschlicherweise die Knoten Version bleibt v3.8.6 v5.12.0 und NPM-Version zu sein. Ich versuchte auch Knoten-Garn (https://hub.docker.com/r/yarnpkg/node-yarn/) Paket speziell für dieses Problem gemacht.

Eine mögliche Lösung kann sein, die Image-Version des Knotens in Dockerfile zu ändern, aber jedes Mal bleibt es unverändert. Aber wenn ich denselben Prozess auf einer lokalen Maschine mit (Knoten: 5) ausführe, funktioniert es wie erwartet.

Jetzt zum Ausführen von Containern verwende ich "kompose up", die die docker-compose.yml-Datei ausführt und Pods automatisch implementiert. Die Datei docker-compose.yml wird unten angezeigt.

backend: 
    container_name: open-loyalty-backend 
    image: gcr.io/open-loyalty/openloyalty_backend 
    links: 
    - elk 
    - db 
    - mail 
    ports: 
    - "8181:80" 
    extra_hosts: 
    - "web:127.0.0.1" 
frontend: 
    container_name: open-loyalty-frontend 
    image: gcr.io/open-loyalty/openloyalty_frontend 
    ports: 
    - "8182:3000" 
    - "8183:3001" 
    - "8184:3002" 
elk: 
    container_name: open-loyalty-elk 
    image: elasticsearch:2.2 
db: 
    container_name: open-loyalty-postgresql 
    image: postgres 
    environment: 
    - POSTGRES_DB=openloyalty 
    - POSTGRES_USER=openloyalty 
    - POSTGRES_PASSWORD=openloyalty 
mail: 
    container_name: open-loyalty-mail 
    image: mailhog/mailhog 
    ports: 
    - "8186:8025" 

Also, gibt es eine mögliche Lösung mit diesem Fehler?

+0

Haben Sie versucht 'Docker bauen - no-Cache .'? –

+0

@TarunLalwani Ich habe versucht, aber hat nicht funktioniert. – vivekpadia70

Antwort

0

Es ist seltsam, dass es nicht funktioniert, aber die Garn-Installationsdokumente sagen ausdrücklich, dass Sie nicht über Npm installieren sollten.

Hinweis: Die Installation von Garn über npm wird generell nicht empfohlen. Wenn Garn mit knotenbasierten Paketmanagern installiert wird, ist das Paket nicht signiert, und die einzige durchgeführte Integritätsprüfung ist ein einfacher SHA1-Hash, , der ein Sicherheitsrisiko bei der Installation systemweiter Anwendungen darstellt.

Aus diesen Gründen wird dringend empfohlen, Garn mit der für Ihr Betriebssystem am besten geeigneten Installationsmethode zu installieren.

auf Debian, würde die Installation so:

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - 
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 
RUN apt-get update && apt-get install yarn 

Wenn Sie bereit sind node:8.4 zu laufen, kann ich bestätigen, diese Methode auf diesem Bild arbeitet.

Vergewissern Sie sich außerdem, dass sich das Verzeichnis der globalen Knotenmodule in Ihrem PATH befindet. Andernfalls wird es in der Befehlszeile nicht verfügbar sein. npm root wird Ihnen sagen, wo das ist.

Eine Sache, die helfen könnte, ist die Verwendung eines ENTRYPOINT-Skripts, das Garn zur Laufzeit installiert, unmittelbar bevor Sie es verwenden müssen.

ENTRYPOINT ["./entry.sh"]

Wenn Sie kümmern sich nicht um Garn, und Sie wollen nur das Projekt, arbeiten dann einfach npm stattdessen verwenden.

+0

Ich habe versucht (Knoten: neueste) auch, aber es funktioniert nicht.Und auch diese Art der Installation von Garn verwendet, indem Sie diese Befehle über Dockerfile ausführen. Obwohl der gleiche Fehler. – vivekpadia70

+0

Geben Sie die Methode an, die Sie zum Ausführen des Containers verwenden. –

+0

Ich habe die Methode zu meiner Frage hinzugefügt. – vivekpadia70

Verwandte Themen