目標
- 使用 Ubuntu20.04 官方 image 當底,裝上 nginx 當網站伺服器。
步驟
- step01 : 建立需要的目錄和檔案 (dockerfile、nginx.conf、index.hml)。
- step02 : 編寫 dokcerfile。
- step03 : 編寫 nginx.conf。
- step04 : 編寫 index.html。
- step05 : dockfile build 產出 Image 。
- step06 : 使用 Image 建立 container,並測試結果。
建立目錄和檔案
.
└── ubuntu_nginx
└── nginx
│ └── myDomain.conf
├── index.html
└── Dockerfile
Dockerfile
FROM ubuntu:20.04
MAINTAINER Jamie
# apt update、設定時區
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive && \
apt-get install -y --no-install-recommends tzdata && \
ln -snf /usr/share/zoneinfo/Asia/Taipei /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
# 安裝 nginx
RUN apt-get install -y nginx
# 寫好的 nginx 設定檔,放到指定的目錄底下
COPY myDomain.conf /etc/nginx/sites-available/myDomain.conf
# 寫好的 index.html 也放到指定的目錄底下
COPY index.html /var/www/myDomain/html/index.html
# 加入軟連結,讓 nginx 知道設定
RUN ln -s /etc/nginx/sites-available/myDomain.conf /etc/nginx/sites-enabled/myDomain.conf
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
nginx.conf
server {
listen 80;
listen [::]:80;
root /var/www/myDomain/html;
index index.html index.htm;
server_name my-domain www.my-domain;
location / {
try_files $uri $uri/ =404;
}
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> Hello World !!</h1>
</body>
</html>
Build Dockefile and Build Container
$ cd ubuntu_nginx
$ docker build -t ub_nginx_image .
# ---- building image ---- #
$ docker run -p 80:80 ub_nginx_image
到 C:\Windows\System32\drivers\etc\hosts 檔裡,加入my-domain。
127.0.0.1 my-domain
Test
打開瀏覽器輸入 http://my-domain
,跑出Hello World !!
成功。
先挖個坑,提醒一下自己。之後要把以下內容補齊 ~
- nginx.conf 設定檔寫法
- nginx 路徑
/etc/nginx/sites-available/
跟/etc/nginx/sites-enabled/
分別是 ? - Dockerfile 最後一句 CMD 為什麼不是
service nginx start
?