2017-11-29 4 views
0

私は現在、dokkuインスタンスにAngular4アプリケーションを導入していますが、このエラーが発生しています。! [remote rejected] develop -> master (pre-receive hook declined)Dokkuの展開で、プレ受信フックがエラーを拒否した問題を解決するにはどうすればよいですか?

私はこのようになりますDockerfile、経由で展開していますgit push mediafactory develop:master

を私はマスターに開発ブランチから展開していますので、私はように、展開コマンドを実行します。

FROM node:carbon 

RUN mkdir -p /opt/app 
WORKDIR /opt/app 

COPY package*.json ./ 

RUN npm install --save @angular/[email protected] 
RUN npm install --only=production 

COPY .angular-cli.json . 
COPY . . 

RUN ng build --aot -prod 

ENV APP_ID setYourAppId 
ENV MASTER_KEY setYourMasterKey 
ENV DATABASE_URI setMongoDBURI 

EXPOSE 1337 

CMD ["npm", "start"] 

私は問題を解決していないようだ、

sudo wget -O /etc/init/docker.conf https://raw.github.com/dotcloud/docker/master/contrib/init/upstart/docker.conf 

sudo service docker restart 

を実行しようとしたが。

答えて

3

私はついにこの問題を解決しました。私は誰かが私と同じ問題に直面するかもしれないことを知っている。

なぜ上記の問題が発生するのかという3つの主な理由があります。

まず、あなたがこのエラーに上陸した場合、

remote: <app name> is currently being deployed. Exiting... 
To <dokku remote>:<app name> 
! [remote rejected] develop -> master (pre-receive hook declined) 

あなたが簡単にdokkuホストからこれらの2つのコマンドを実行することにより、上記の問題を解決することができます。

$ sudo wget -O /etc/init/docker.conf https://raw.github.com/dotcloud/docker/master/contrib/init/upstart/docker.conf 

$ sudo service docker restart 

は第二に、私の場合と同様に、それはあなたが@角度/ CLIをインストールグローバルしようとすると、無限ループにつながるグローバルノードモジュールフォルダのアクセス権に問題でした。残念ながら、許可を与えた後でさえ、pre-receive hook declinedエラーは持続します。これは、私が使用していた@ ngular/cli画像のためです。

エラーはあなたが、あなたのDockerfileに次の行を追加することにより、上記のエラーを解決することができ、この

... 
/usr/local/lib/node_modules/@angular/cli/node_modules/node-sass/.node- 
gyp/8.9.1 
gyp WARN EACCES user "nobody" does not have permission to access the 
dev dir 
"/usr/local/lib/node_modules/@angular/cli/node_modules/node-sass/.node- 
gyp/8.9.1" 
gyp WARN EACCES attempting to reinstall using temporary dev dir 
"/usr/local/lib/node_modules/@angular/cli/node_modules/node-sass/.node-gyp" 
... 

のように見えた場合にのみ、/usr/localのようなコマンド$ npm config get prefix返し何か、そうでなければ、台無しにあなたの許可をしてもよいです。

RUN chown -R $(whoami) $(npm config get prefix)/lib/node_modules 

はそれが問題を解決を回避するのです。このコマンド

RUN npm install -g --unsafe-perm @angular/cli 

であなたの容器にグローバル@角度/ CLIをインストールします。

問題を引き起こす可能性のあるその他の問題は、コンテナにpackage-lock.jsonを追加しています。同じ問題が発生する可能性があるため、無視することも考えられます。 したがって、新しいDockerファイルは次のようになります。第三に、最後

FROM node:carbon 

RUN mkdir -p /opt/app 
WORKDIR /opt/app 

RUN chown -R $(whoami) $(npm config get prefix)/lib/node_modules 

RUN npm install -g --unsafe-perm @angular/cli 

COPY package.json . 

RUN npm install --only=production 

COPY .angular-cli.json . 
COPY . . 

RUN ng build --aot -prod 

ENV APP_ID setYourAppId 
ENV MASTER_KEY setYourMasterKey 
ENV DATABASE_URI setMongoDBURI 

EXPOSE 1337 

CMD ["npm", "start"] 

あなたはVagrant dokkuインストールを使用している場合は、pre-receive hook declinedエラーが仮想マシンに低メモリの割り当てが原因である可能性があり。

あなたのdokku repoのVagrantfileを編集して、仮想マシンにさらに多くのメモリを割り当てることができます。たとえば、Vagrantfileに次の行を追加すると、メモリを1GBから2GBに増やすことができます。

config.vm.provider :virtualbox do |vb| 
    vb.customize ["modifyvm", :id, "--memory", 2048] 
end 

その後、あなたはあなたのベイグラントファイルで指定された変更を適用するには$ vangrant reloadを実行します。

問題が引き続き発生し、mongoDBを使用している場合は、mongoインスタンスをチェックアウトして期待どおりに動作しているかどうかを確認することができます。 dokkuホストで$ dokku mongo:listを実行すると、mongoインスタンスのステータスを確認できます。

最後に、上記のいずれにも役立つことがなく、それでも問題が解決しない場合は、ドックアプリを破棄して新しいアプリケーションを再作成する必要があります。これを行う前に、追加の注意を払ってください!!!

You may checkout a tutorial I wrote about deploying 2 apps in the same docker container, with dokku

関連する問題