web-dev-qa-db-ja.com

Dockerコンテナーを使用しているときに403:Forbiddenを解決するにはどうすればよいですか?

私はDockerを初めて使用し、現在このチュートリアルに従っています。

12分でDockerを学ぶ

必要なファイルを作成し、「Hello World!」を表示するように作成しました。 localhost:80上。

そのポイントを超えて、私は自分のフォルダーへの直接参照を使用してコンテナーをマウントしようとしました。これにより、index.phpファイルを更新して開発環境を模倣できるようになり、次のエラーが発生します。

Forbidden

私が行ったのは、画像の実行方法を変更することだけなので、index.phpファイルのコンテンツを更新して、F5を押したときにWebページに変更が反映されることを確認できます。

現在、Windows 10 ProでDocker for Windowsを使用しています

Docker for Windowsが実行されています

私はすべての手順を慎重に実行したので、だまされないようになり、うまくいかなかったようです。

モーナーの質問に答えるために、これがdocker psの結果です。

docker ps

そして、ここでdocker logs [container-name]

docker logs ae

そして、内部で何が起こっているのかをよりよく理解したので、ログに示されている問題を解決するにはどうすればよいですか?

これが私のDockfileです

Dockerfile

そして、イメージを実行するために実行したコマンド:

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world

そして、ファイルが存在することがわかります。

path to index.php

5

index.phpを誤って修正しているようです。それをデバッグするためにできることは、最初にindex.phpが実際にコンテナ内にマウントされているかどうかを確認することです。
次のコマンドを発行できます:

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/ hello-world bash -c 'ls -lsh /var/www/html/'

(機能しない場合は、shではなくbashを使用してください)。実際にindex.phpが表示される場合は、ファイルが正しくマウントされていることを祝福します。エラーの原因はDockerではなく、Apacheです。

index.phpがない場合は、Dockerfileを確認する必要があります。 src/をマウントし、/srcがDockerfileと同じディレクトリにあるかどうかを確認します。

更新してください:)

2
Mornor

使用可能なインデックスファイルがないため、ディレクトリの内容を表示しようとするApacheからエラーが発生しています。 Dockerマッピングが正しく機能していないか、Apacheにphpサポートがインストールされていません。 http:// localhost にアクセスしています。試してみてください http://localhost/index.php

同じエラーが発生する場合、問題はマッピングにあります。 PHPコードを取得する場合、問題は、ApacheでのPHPサポートの欠落にあります。

2
Antti A

私は答えが遅いことを知っていますが、答えは非常に簡単です。これが起こるのは、Dockerを使用していて、SELinuxがある場合、ホストがコンテナーのSELinuxポリシーを認識していないことに注意してください。 zを追加することにより

docker run -p 80:80 -v /wmi/tutorials/docker/src/:/var/www/html/:z hello-world

これは自動的にchcon ....あなたがする必要があること。

1
WISAM