Dockerのcomposeファイルを書く際のport指定を、ポート番号のみで指定することが多いと思いますが、これだとLAN内の他のPC等からアクセスできてしまいます。
テレワークでLAN内の家族のPCからアクセスされたり、会社内でも関係者外からアクセスされることが望ましくない場合も多いと思います。
以下に簡単な内容となりますが、周知になることも期待し、それを防ぐ書き方をまとめておこうと思います。
記載の方法
compose.yaml
には以下のように、ポート名に加え127.0.0.1
を指定して記載するだけで良いです。
compose.yaml
services:
web:
image: nginx
volumes:
- ./html:/usr/share/nginx/html
ports:
- "127.0.0.1:8080:80"
HTMLの内容です。お試しなので何でも良いです。
./html/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>HTML</title>
</head>
<body>
<h1>Hello!</h1>
<p>This is sample.</p>
</body>
</html>
結果
- 自身のPCから、
http://localhost:8080
やhttp://127.0.0.1:8080
でアクセスできます - 自身のPCや、LAN内の他のPCから、ローカルIPなどではアクセスできません(例:
http://192.168.1.10
など)
上記のようにlocalhost(ループバックアドレス)に制限することで、他のPCからのアクセスを防ぐことができます。
文献等では、このような定義をしているものがほとんど無さそうですが、自分自身が使うものであれば必ず書く癖をつけておいてもいいかもしれません。