[解決済み] bash スクリプトを実行しているドッカーエントリーポイントが "パーミッション拒否" になる
質問
node.jsのアプリをDocker化しようとしています。コンテナの構築時に
git clone
を実行し、nodeサーバを起動します。そのため、これらの操作を.shスクリプトにまとめました。そして、ENTRYPOINTで1つのコマンドとしてスクリプトを実行します。
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y build-essential libssl-dev gcc curl npm git
#install gcc 4.9
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
RUN apt-get update
RUN apt-get install -y libstdc++-4.9-dev
#install newst nodejs
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD package.json /usr/src/app/
RUN npm install
ADD docker-entrypoint.sh /usr/src/app/
EXPOSE 8080
ENTRYPOINT ["/usr/src/app/docker-entrypoint.sh"]
私のdocker-entrypoint.shはこのような感じです。
git clone git@<repo>.git
git add remote upstream git@<upstream_repo>.git
/usr/bin/node server.js
このイメージをビルドして実行した後。
docker run --env NODE_ENV=development -p 8080:8080 -t -i <image>
得ている。
docker: Error response from daemon: oci runtime error: exec: "/usr/src/app/docker-entrypoint.sh": permission denied.
コンテナにシェルで入ってみると、docker-entrypoint.shのパーミッションが。
-rw-r--r-- 1 root root 292 Aug 10 18:41 docker-entrypoint.sh
の3つの質問をします。
-
私のbashスクリプトは構文が間違っているのでしょうか?
-
画像に追加する前にbashファイルのパーミッションを変更するにはどうしたらいいですか?
-
bash スクリプトを使用せずに、エントリポイントで複数の git コマンドを実行する最良の方法は何でしょうか?
ありがとうございます。
解決方法は?
-
パーミッションが拒否されました。 まったく . したがって、適切と思われる唯一の構文は、最初の行 ("shebang") のもので、次のようになるはずです。
#!/usr/bin/env bash
または#!/bin/bash
など、ターゲットのファイルシステムレイアウトに依存します。 -
ファイルシステムのパーミッションが実行できるように設定されていない可能性が高いです。また、shebang が実行可能でないものを参照している可能性もありますが、こちらは はるか の可能性は低くなります。
-
先行する問題の修復が容易なため、ムードがある。
の単純な読み方です。
docker: Error response from daemon: oci runtime error: exec: "/usr/src/app/docker-entrypoint.sh": permission denied.
...は、スクリプトが実行可能であるとマークされていないことです。
RUN ["chmod", "+x", "/usr/src/app/docker-entrypoint.sh"]
は、コンテナ内でこれに対応します。別の方法として
Dockerfileから参照されるローカルコピーが実行可能であることを確認します。
を使用し、その後に
COPY
(メタデータを保持するように明示的に文書化されている)。
関連
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] bashシェルスクリプトの全引数を伝搬させる
-
[解決済み] Bashスクリプトでカレントディレクトリ名(フルパスなし)を取得する
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み】Bashスクリプトでクリップボードにパイプを接続する
-
[解決済み】Docker.NETの不具合を修正する方法。パーミッションが拒否される問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】シェルスクリプトで整数式が期待されるエラーが発生する
-
[解決済み】Bashのif条件で「unary operator expected」エラーが発生する。
-
[解決済み] Docker ubuntu イメージ - bash: man: コマンドが見つかりません。
-
[解決済み] bashの文字列の等値性テストで、予期しない演算子エラーが発生するのはなぜですか?重複
-
[解決済み] zip警告 - 名前が一致しない
-
[解決済み] スクリプトからのエラーメッセージを含むすべての端末出力をログファイルにパイプする方法
-
[解決済み] cygwin の ssh が終了時に "Killed by signal 1" と表示される
-
[解決済み] nohupプロセスを終了させる方法を教えてください。
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] シェルスクリプトでの連想配列