LoginSignup
0
0

More than 3 years have passed since last update.

dockerでnginxを使ってhtmlを表示する。

Posted at

先月から少しずつ色んな記事を見ながら勉強してDockerfileとdocker-composeのいじり方が徐々に分かってきた感じなので、
アウトプットの練習も兼ねて記事にしたいと思いました。今回nginxを立ち上げるだけなのですが練習の意味でdocker-composeも利用してコンテナの設定を構築します。

環境

  • Docker 19.03.13
  • docker-compose 1.27.4
  • nginx 1.16

Dockerfileの設定

なにはともあれDockerfileの設定をしましょう。適当なディレクトリを作成してDockerfileを作成します。

Dockerfile
FROM nginx:1.16

ADD index.html /usr/share/nginx/html/index.html

CMD /usr/sbin/nginx -g 'daemon off;'
FROM

DockerHubからイメージをプルしてきます。

ADD

同じディレクトリのファイルをコンテナ内の指定したディレクトリにあるファイルに上書きします。今回Dockerfileと同じディレクトリにあるindex.htmlにてコンテナ内のファイルを上書きします。

CMD

コンテナが起動した際に走らせるコマンドを指定します。nginxはデフォルトだとデーモンで起動するのでここではデーモンオフにしてフォアグラウンドで実行する設定にしています。こうしないとdockerがコマンド実行したのち停止します。

表示するhtml

index.html
this is nginx test!!!!

書くほどのこともないですが上書き用のhtmlも用意します。

docker-composeの設定

一個のコンテナで使う意味はないですが、設定を書きます。

docker-compose.yml
version: '3'
services: 
  web:
    build: .
    ports: 
      - 80:80

webサーバーなのでwebという名前にしています。同じディレクトリのDockerfileを使ってbuild。
ホスト80番、コンテナ80番でポートフォワーディングさせています。

nginx_test
  ┣ Dockerfile
  ┣ docker-compose.yml
  ┣ index.html

最終的にはこんな感じ

コンテナを起動

コンテナを起動して起動しているか確認します。

$ docker-compose up -d
$ docker ps

確かに80番でnginxが80番ポートで待ってます。今行くぜ!

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
ec41e6accd3e        nginx_test_web      "/bin/sh -c '/usr/sb…"   20 minutes ago      Up 20 minutes       0.0.0.0:80->80/tcp   nginx_test_web_1

http://localhost にてアクセスしてindex.htmlの記述が表示されれば成功です。

所感

自分の中ではADDというのがしっかり理解できず、技術記事を見ていても、なんでローカルのファイルがコンテナに反映されるかが分からずに悩んでいましたがnginxのdockerでの起動について調べていくうちに理解できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0