《Dokcer的使用》(四) 實戰之Nginx+靜態網站部署

碼-羊發表於2020-11-26

1、下載Centos的基礎映象

     說明:基礎映象是所有自定義Dockerfile映象必須引用的,一般基於centos、ubuntu等作業系統映象

#docker pull下載centos的latest版本,也可指定版本docker pull centos:標籤名
docker pull centos

2、建立Dockerfile構建目錄及Dockerfile檔案

#1、建立Dockerfile構建環境目錄
mkdir static-website

#2、進入構建目錄
cd static-website

#3、建立Dockerfile檔案
touch Dockerfile

#4、編輯Dockerfile檔案(第3步可忽略,也可直接vi Dockerfile 會自動建立好檔案)
vi Dockerfile

3、配置Dockerfile檔案內容如下:

#1、引入centos基礎映象
FROM centos:latest

#2、說明作者資訊
MAINTAINER Luoy "luoy@163.com"

#3、設定環境變數,記錄上次修改日期(根據自身情況,此步驟可忽略)
ENV UPDATE_DATE 2020-11-09

#4、下載安裝nginx
RUN yum install -y nginx

#5、新增自定義的nginx配置檔案到映象中
ADD nginx/website.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/nginx.conf

#6、開放80埠
EXPOSE 80

4、Dockerfile配置完成後,接下來我們新增自定義的nginx配置檔案:
     

配置檔案分為website.conf與nginx.conf

 1、website.conf:用於靜態網站相關配置。

 2、nginx.conf:nginx的主配置檔案,這裡主要是將nginx的執行模式(daemon off)改為前臺執行,防止nginx以後臺程式模式執行,導致容器停止執行。

4-1、當前static-website目錄下建立nginx目錄

#1、在當前Dockerfile的構建目錄下建立nginx目錄
mkdir nginx

4-2、配置website.conf內容如下

server{

 listen 0.0.0.0:80;
 server_name localhost; #也可配置為域名
 
 location /{
      root /home/static;
      index website/index.html;  
  }

  location /website{
      root /home/static;
      index index.html;  
  }

}

4-3、配置nginx.conf內容如下(此配置只是為了演示效果,主要在原始的nginx.conf檔案裡新增了daemon off 配置,其他配置未做更改)

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#主要新增此配置 daemon off;
daemon off;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

5、構建映象

#進入static-website目錄,執行docker build
docker build -t="luoy/website:v1" .

6、等待構建成功

7、檢視映象:docker images 

8、啟動映象

#啟動映象
#-d 以守護程式模式執行該容器
#-v /home/static:/home/static 將宿主機靜態網址目錄對映到容器中,使容器可訪問到公共的靜態網址
#-p 80:80 將主機的80埠對映到容器的80埠
#luoy/website:v1 映象使用者名稱/倉庫名:標籤
#nginx 啟動nginx
docker run -d -v /home/static:/home/static -p 80:80 luoy/website:v1 nginx

9、檢視執行的容器:docker ps 

10、開放宿主機的80埠,使外網環境訪問到靜態網址

10-1、騰訊雲伺服器開放埠步驟:安全組-》入站規則-》新增80埠

10-2、私有伺服器/本地伺服器開放埠步驟:

#開放80埠
firewall-cmd --add-port=80/tcp --permanent 

#重啟防火牆
systemctl restart firewalld

11、到此所有配置完成,通過瀏覽器訪問nginx伺服器IP或域名即可訪問到靜態網站

 

 

相關文章