Windows10にVMwareで仮想サーバを構築し、Dockerを使ってみる

##概要
Dockerを使用したときの備忘録も兼ねて、手順を残しておきたいと思います。

仮想環境：VMware Workstation 14 Player
OS:CentOS8

##VMware Workstationインストール

インストール手順について記載された記事が多数あるため、
私のほうでは、記載はしません。

以下手順を参考にしてみてください。
[Windows10にVMware Workstation Playerをインストール](https://qiita.com/HirMtsd/items/dd867000aa1e6a77f99b)

##CentOS8環境構築

インストール手順について記載された記事が多数あるため、
私のほうでは、記載はしません。

以下手順を参考にしてみてください。
[CentOS8をVMwareWorkstationにインストール](https://qiita.com/kimo_0tak/items/970a8171ac5524fbd8e3)

##Dockerインストール

今回以下の記事を参考にさせていただきました。
[Docker入門](https://knowledge.sakura.ad.jp/13265/)

Dockerインストール後から記載していきます。

##Dockerfile作成

 - Tomcat用

```bash:/root/tomcat配下

#Tomcatファイル格納ディレクトリ・ログ用ディレクトリ作成
cd /root/tomcat
mkdir files
mkdir logs
ls -l
→files・logsディレクトリが作成されていること

#Tomcatモジュールダウンロード
cd files
wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz   

#ダウンロード確認
ls -ltr
→ダウンロードしたファイルが存在すること

#Dokcerfile作成
vim Dockerfile

#以下を追記
FROM centos:8
RUN yum install -y java
ADD files/apache-tomcat-9.0.37.tar.gz /opt/
CMD [ "/opt/apache-tomcat-9.0.37/bin/catalina.sh", "run" ]

```

 - Nginx用
 
```bash:/root/nginx配下
#設定ファイル格納ディレクトリ・ログ用ディレクトリ作成
cd /root/nginx
mkdir files
mkdir logs
ls -l
→files・logsディレクトリが作成されていること

#Nginx設定ファイル作成
#default.confは、「location /tomcat/」の記載以外は、コンテナ作成時の初期ファイルです。
#今回は事前に取得しております。
cd files
vim default.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /tomcat/ {
        proxy_pass    http://tomcat-1:8080/;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

#Dokcerfile作成
vim Dockerfile

FROM nginx:latest
RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_org
COPY ./files/default.conf /etc/nginx/conf.d/
```

##イメージ作成

Dockerfileをもとに、イメージを作成する

```bash:コンソール

#Tomcatイメージ作成
cd /root/tomcat
docker build -t tomcat:1 .

#Nginxイメージ作成
cd /root/nginx
docker build -t nginx-tomcat:1 .

```

##Dockerネットワーク作成

コンテナ間の通信を可能にするために、作成する

```bash:コンソール
docker network create tomcat-network
```

##コンテナ作成

作成したイメージをもとに、コンテナを作成

```bash:コンソール

#Tomcatコンテナ
docker run --name tomcat-1 --network tomcat-network -v /root/tomcat/logs:/share/logs -d tomcat:1

#Nginxコンテナ
docker run --name nginx-tomcat-1 --network tomcat-network -p 10080:80 -v /root/nginx/logs:/share/logs -d nginx-tomcat:1
```

##アクセス確認

VMにログインして、Firefoxを開き、以下にアクセス
http://localhost:10080/
→Nginxのページが開くこと

http://localhost:10080/tomcat/
→Tomcat画面が表示されること

##まとめ
Dockerを使用することで、環境構築がより簡素化できるため、
積極的に活用していきたい。