学習のためにdocker-composeを利用してReactアプリケーションを立ち上げようとしています.
学習中でdocker-compose.ymlの中のcommandに
command: sh -c "cd sample-project && yarn start"
というコードを見つけたのですが,このsh -c
とはなぜ必要なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
cd
を実行したいためと思われます
cd
は普通に command
として与えても実行できません
例:
Yaml
1version: "3.8" 2services: 3 test: 4 command: cd /root 5 image: debian
実行結果:
console
1$ docker-compose up 2Creating network "test-docker_default" with the default driver 3Creating test-docker_test_1 ... error 4 5ERROR: for test-docker_test_1 Cannot start service test: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"cd\": executable file not found in $PATH": unknown 6 7ERROR: for test Cannot start service test: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"cd\": executable file not found in $PATH": unknown 8ERROR: Encountered errors while bringing up the project.
しかし、working_dir
を指定することで
cd
なしでも同様のことが実行できる可能性はあります:
Yaml
1version: "3.8" 2services: 3 test: 4 command: pwd 5 image: debian 6 working_dir: /root
実行結果:
console
1$ docker-compose up 2Creating network "test-docker_default" with the default driver 3Creating test-docker_test_1 ... done 4Attaching to test-docker_test_1 5test_1 | /root 6test-docker_test_1 exited with code 0
参考:
投稿2020/10/10 08:23
編集2020/10/10 08:32総合スコア3272
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。