[解決済み] DockerfileのCMD内で変数を使用するにはどうすればよいですか?
2022-05-01 19:37:03
質問
私のDockerfileの中です。
ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]
エラーです。
CommandError: '$PROJECTNAME' is not a valid project name
ここで一番手っ取り早い回避策は何でしょうか? Dockerはこの機能を修正したり、Dockerの将来のバージョンで導入する予定はありますか?
注:Docker ファイルから CMD 行を削除してから Docker コンテナを実行すると、コンテナ内から Django-admin startproject $PROJECTNAME を手動で実行でき、プロジェクトが作成されます...。
どうすればいいですか?
実行リストを使用する場合、以下のようになります。
CMD ["django-admin", "startproject", "$PROJECTNAME"]
...すると、Dockerは与えられたコマンドを実行します。 直接 シェルを介さずに、です。 シェルが介在しないので、つまりは
- 変数の展開がない
- ワイルドカード展開なし
-
での入出力リダイレクトはありません。
>
,<
,|
など -
による複数コマンドは不可。
command1; command2
- といった具合に。
もし、あなたの
CMD
を変数に展開するには、シェルを手配する必要があります。 それはこんな風にすればいい。
CMD ["sh", "-c", "django-admin startproject $PROJECTNAME"]
また、実行リストの代わりに単純な文字列を使っても、前の例とほぼ同じ結果が得られます。
CMD django-admin startproject $PROJECTNAME
関連
-
[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?
-
[解決済み】docker: ドライバがエンドポイントウェブサーバの外部接続のプログラミングに失敗しました。
-
[解決済み] docker terminal: IP待ち
-
ドッカーコンテナの状態がExitと表示される(1)
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] Dockerfileにコメントを入れるにはどうしたらいいですか?
-
[解決済み] DockerfileのRUNとCMDの違いについて
-
[解決済み] Dockerコンテナにユーザーを追加する方法は?
-
[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Docker: apt-utilsのインストールに問題があります。
-
[解決済み】D-Bus接続の取得に失敗しました。操作が許可されていません
-
[解決済み] System.InvalidOperationException: Failed to deploy distro docker-desktop to C:\UserslenovaAppDataLocal╱distro: exit code: -1
-
[解決済み] dockerでCOPYするが、除外する
-
bashでの解決方法 : docker :コマンドが見つかりません。
-
net/http: 接続待ちの間にリクエストがキャンセルされた (Client.Timeout exceeded while awaiting head)
-
docker-composeによるmysqlのデプロイメントの実践
-
docker-composeはmysqlをボリュームでデプロイする際のパーミッション拒否の問題を解決します。
-
Docker mount host directory Docker access Permission denied 解決策
-
ドッカーコンテナの状態がExitと表示される(1)