1

問題

Failed step: setup environment - Command exited with exit code: 1Docker イメージでユーザーを切り替えると、wercker ビルドが終了します。wercker devコマンドラインから実行しています。Dockerfile は、Docker Hub だけでなく、コマンドラインでも Docker 自体を使用して正常にビルドされます。うまく走れます。エラーが発生するのは、werckerに使用したときだけです。

たとえば、私の Dockerfile には次のコードがあります。

# Adding user 
RUN adduser --disabled-password --gecos '' dockworker && adduser dockworker sudo && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN mkdir -p /home/dockworker && chown -R dockworker:dockworker /home/dockworker
USER dockworker # Line the build seems to break on

この行をコメントアウトすると、合格のようです。私にとって、これに関する問題は次のとおりです。インストールしようとしているので、別のユーザーに切り替えたいと思いますnvm( for gulpbower)。通常、これをルートとしてインストールすることは好まないため、このためのユーザーを追加します。

回避策

ただし、nvmDockerfile にルートとしてインストールすると (上記のコードブロックのユーザー関連の行を完全に削除するだけです):

ENV NODE_VERSION 0.12.7
ENV NVM_DIR /usr/local/nvm

# NVM
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | NVM_DIR=/usr/local/nvm bash

#install the specified node version and set it as the default one, install the global npm packages
RUN . /usr/local/nvm/nvm.sh && nvm install $NODE_VERSION && nvm alias default $NODE_VERSION && npm install -g bower && npm install -g gulp

setup environmentその後、ステージを通過しますが、ステップ中にエラーが発生しnvmnpm見つかりません。のステップwercker.yml:

box:
    id: francobolli/docker-ubuntu-14.04-php-5.6
    tag: latest
    env:
        NVM_DIR: /usr/local/nvm
dev:
    steps:
      - script:
          name: gulp styles and javascript
          code: |
              npm install
              bower install --allow-root 
              gulp --env=production     

これはよくわかりません。コマンドラインから両方の docker イメージを実行すると (コンテキストから wercker が完全に削除された状態で) 実行でき、問題なく実行できnvmますがnpm、wercker を介して実行すると、ファイルが実行されていないようです。.bashrc手順をcat ~/.bashrc実行すると、次のことがわかります。

export NVM_DIR="/usr/local/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

回避策!

これをステップに入力すると実行されnpm install、問題なく実行できるため、次の方法で実行されることはないようです.bashrc

...
      - script:
          name: gulp styles and javascript
          code: |
              [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # It works when I put it here, but it's also in ~/.bashrc, which doesn't seem to get executed
              npm install
...

注:source ~/.bashrc代わりに wercker ステップにいる場合、機能しません。

質問

したがって、私の質問は次のとおりです。Wercker ビルドでユーザーを切り替えることができないため、何が間違っているのでしょうか。また、できたとしても、ルートで nvm を実行するのと同じ問題がありますか?コマンドラインからインスタンス化されますが、Wercker で実行すると見つかりません。最善の解決策は何ですか?

wercker.yml適切なユーザー構成または適切な nvm 構成によって解決できる場合は、コマンドを追加したくありません。非常に明白な何かが欠けている場合は申し訳ありません。

4

1 に答える 1

1

これは Docker の構成とは関係ありませんが、Wercker が Docker ボックスを処理する方法とは関係ありません。ドキュメントから:

須藤の使用

sudo コマンドは wercker v2 ではサポートされなくなり、使用しても実質的に何もしません。

そして展開のために:

Docker (Ewok バージョン) を使用するようにプロジェクトを更新し、このプロジェクトに自動デプロイがある場合、このデプロイは失敗する可能性が高いことに注意してください。これらのコンテナーをデプロイする方法については、今後ドキュメントを更新する予定です。

ただし、元の質問に表示されているように、ソリューション (一時的な回避策?) を使用してビルド (およびデプロイ) することができました。

于 2015-08-19T12:01:23.620 に答える