[解決済み] bash スクリプトを実行している docker エントリポイントに "permission denied" が表示される。
質問
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 部分的にコピーされたファイルでscpを再開する方法は?[クローズド]です。
-
[解決済み] find -exec cp {} でエラー 'find: missing argument to -exec' が発生した場合の解決策。TARGET_DIR + [閉店]。
-
[解決済み] ファイルに書き込むが、ファイルが存在する場合は上書きする
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] bash スクリプトを実行しているドッカーエントリーポイントが "パーミッション拒否" になる
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
解決策:bash: /root/.bashrc: パーミッションが拒否されました
-
[解決済み] シェルスクリプトで整数式が期待されるエラー
-
[解決済み] 環境変数を表示/エコーするには?