どうやってVSCodeなどで作業したものをdockerで確認するのか?
さてdockerはなんとなく動くようにはなったと思いますが、問題はローカルPCで例えばhello worldを書いてどうやってdocker上にあげるのか(確認するのか)という問題です。
まったくの初学者ならばまずはこちらの記事から最低限のコンテナ起動ができるところまでをまずは試してみてください。
ここからはdockerコンテナがすでに上がっているものとしてすすめます。
まずはかんたんなHTMLを用意します
作業ディレクトリを決めてください。自分のホームディレクトリ(フォルダ)にworkという名前のディレクトリをつくってそこにHTMLファイルをつくれば良いと思います。本筋ではないので、HTMLがわからないという方はコピペで良いでしょう。HTMLは別途覚えなきゃいけません。
<html> <body> hellow world!! </body> </html>
ソースコードをdockerに配備するためにマウント機能を使います
docker-compose.ymlにはローカルファイルシステムをdockerにマウントする機能があります。それを使うことでローカルPCで作業したファイルをdockerにマウントすることが可能です。まずは前回のdocker-compose.ymlを編集します。
services: nginx: # nginxのofficial docker imageを使います image: nginx:latest container_name: myapp-nginx volumes: - ./work:/usr/share/nginx/html
ymlファイルのvolumesというのがマウント機能です。左側がローカルPCのディレクトリを指ししてそのディレクトリを右側のdockerコンテナのパスにマウントします。これによってローカルPCのworkディレクトリ(フォルダ)はdockerコンテナの中では/usr/share/nginx/htmlとして見ることが可能になりました。
試しにdockerの中身を覗いてみましょうかね。
docker exec -it myapp-nginx ls -al /usr/share/nginx/html
先程workにおいたhtmlファイルがそこにあることが確認できたかと思います。
ソースコードを確認するためにポートフォワーディング機能を使います
services: nginx: # nginxのofficial docker imageを使います image: nginx:latest container_name: myapp-nginx volumes: - ./work:/usr/share/nginx/html ports: - 8080:80
ポートフォワーディング(ポートフォワード)は、あるポートからあるポートへフォワーディング(転送)する機能です。元々はネットワーク用語ですが、エンジニアの間では普通につかいますのでdockerに限らず覚えておいて損はないでしょう。この例だとローカルPCの8080ポートをdockerコンテナの80番ポートに転送するという意味です。
これによってローカルPCからブラウザでhttp://localhost:8080/とするとdockerコンテナの80番ポートに転送されるようになります。
あとは80ポートでLISTENしてるdockerコンテナのnginxがコンテンツを返すのでブラウザ上にはhello worldが表示されているかと思います。
どうでしたか、ちょっとむずかしいかもしれませんが愚直に真似してブラウザ画面表示までなんとかやってください。これができたら次はPHPが実行できるようにしたいと思います。ここを乗り越えればPHPも難しくありません。