ローカルPCでソースコードを編集しdockerで確認する_docker入門

どうやってVSCodeなどで作業したものをdockerで確認するのか?

さてdockerはなんとなく動くようにはなったと思いますが、問題はローカルPCで例えばhello worldを書いてどうやってdocker上にあげるのか(確認するのか)という問題です。

まったくの初学者ならばまずはこちらの記事から最低限のコンテナ起動ができるところまでをまずは試してみてください。

ここからはdockerコンテナがすでに上がっているものとしてすすめます。

まずはかんたんなHTMLを用意します

作業ディレクトリを決めてください。自分のホームディレクトリ(フォルダ)にworkという名前のディレクトリをつくってそこにHTMLファイルをつくれば良いと思います。本筋ではないので、HTMLがわからないという方はコピペで良いでしょう。HTMLは別途覚えなきゃいけません。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<html>
<body>
hellow world!!
</body>
</html>
<html> <body> hellow world!! </body> </html>
<html>
<body>
hellow world!!
</body>
</html>

ソースコードをdockerに配備するためにマウント機能を使います

docker-compose.ymlにはローカルファイルシステムをdockerにマウントする機能があります。それを使うことでローカルPCで作業したファイルをdockerにマウントすることが可能です。まずは前回のdocker-compose.ymlを編集します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
services:
nginx:
# nginxのofficial docker imageを使います
image: nginx:latest
container_name: myapp-nginx
volumes:
- ./work:/usr/share/nginx/html
services: nginx: # nginxのofficial docker imageを使います image: nginx:latest container_name: myapp-nginx volumes: - ./work:/usr/share/nginx/html
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の中身を覗いてみましょうかね。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker exec -it myapp-nginx ls -al /usr/share/nginx/html
docker exec -it myapp-nginx ls -al /usr/share/nginx/html
docker exec -it myapp-nginx ls -al /usr/share/nginx/html

先程workにおいたhtmlファイルがそこにあることが確認できたかと思います。

ソースコードを確認するためにポートフォワーディング機能を使います

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
services:
nginx:
# nginxのofficial docker imageを使います
image: nginx:latest
container_name: myapp-nginx
volumes:
- ./work:/usr/share/nginx/html
ports:
- 8080:80
services: nginx: # nginxのofficial docker imageを使います image: nginx:latest container_name: myapp-nginx volumes: - ./work:/usr/share/nginx/html ports: - 8080:80
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も難しくありません。