2017-08-19 9 views
0

Kubernetesを使用してこのアプリケーション(https://github.com/DivanteLtd/open-loyalty/)をGoogleクラウドに導入しようとしています。 このアプリケーションをデプロイするために使用されるインスタンスには、OSとしてDebian v4.9が含まれています。また、Docker、GCloud、Kubernetes、Komposeを導入ツールとしてインストールしました。フロントエンドとバックエンドの2つのドッカー画像を作成し、それらをドッカー作成ファイルにリンクしました。現在、フロントエンドモデルでは、フロントエンドのDockerfileのドッカーハブから(ノード:5)イメージを使用しました。以下は、フロントエンドコンテナのドッカーファイルです。Googleクラウドにアプリケーションをデプロイするときにエラーが発生する

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 

私も使用してみました(ノード6)および(ノード7)画像としてではなく、エラーにノードのバージョンはv3.8.6すべきv5.12.0およびNPMバージョンのままです。 また、この問題のために特別に作られたnode-yarn(https://hub.docker.com/r/yarnpkg/node-yarn/)パッケージも試しました。

npm info it worked if it ends with ok 
npm info using [email protected] 
npm info using [email protected] 
npm info readInstalled object 
npm info ok 
/bin/sh: 1: yarn: not found 

可能な解決策は、Dockerfile内のノードのイメージバージョンを変更することができるが、それは誤りで毎回同じままです。しかし、(node:5)を使ってローカルマシン上で同じプロセスを実行すると、期待どおりに動作します。

コンテナを実行するために、私は "kompose up"を使ってdocker-compose.ymlファイルを実行し、ポッドを自動的にデプロイします。 docker-compose.ymlファイルを以下に示します。

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" 

このエラーはありますか?

+0

'docker build --no-cache .'を試しましたか? –

+0

@ TarunLalwani私は試しましたが、うまくいきませんでした。 – vivekpadia70

答えて

0

それはうまくいきませんが、糸のインストールドキュメントは特にnpm経由でインストールしないと言います。

注:糸をnpmで設置することは一般的に推奨されません。 ノードベースのパッケージマネージャでYarnをインストールすると、パッケージには が署名されておらず、実行される完全性チェックは基本的なSHA1ハッシュ、 のみであり、システム全体のアプリケーションをインストールする際のセキュリティリスクです。

これらの理由から、Yarn は、お使いのオペレーティングシステムに最適なインストール方法でインストールすることを強くお勧めします。 Debianでは

、インストールは次のように行くだろう:

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 

あなたがnode:8.4を実行するために喜んでいる場合は、私はこの方法は、その画像上で動作証明することができます。

また、グローバルノードモジュールディレクトリがPATHにあることを確認してください。それ以外の場合は、コマンドラインからアクセスできなくなります。 npm rootこれがどこにあるか教えてくれます。

ENTRYPOINTスクリプトを使用すると、使用する直前に実行時に糸をインストールできます。

ENTRYPOINT ["./entry.sh"]

単に代わりにNPMを使用し、その後、あなたは糸を使用して気にしない、とあなただけのプロジェクトが仕事をしたい場合。

+0

私も試しました(ノード:最新)も動作しません。また、これらのコマンドをdockerfileで実行して糸をインストールする方法も使用しました。同じエラーです。 – vivekpadia70

+0

コンテナを実行するために使用しているメソッドを投稿してください。 –

+0

私は私の質問にメソッドを追加しました。 – vivekpadia70

関連する問題