好吧,身為後端新手的我有個困擾,常常搞不清楚狀況就把伺服器的環境搞得亂七八糟,以至於花許多時間在重建環境上。還好現在有個東西叫Docker,隨時可以砍掉重練的精神拯救了我許多時間跟體力。
然而在看網路上資料時遇到了一些讓我困擾問題…什麼是Dockerfile跟docker-compose.yml?他們在哪裡?他們要放哪裡?如何使用…等,也許這些知識太基礎,不值一提,又或著是我自己沒有好好看人家寫的文章內容…等。
總之,在這邊跟大家分享如何在Docker建立一個基本的Nginx 環境。
讀這篇文章前需要具備的東西及知識:
- 看得懂HTML檔案內容
- 電腦有安裝Docker
- 了解Docker內 Image 跟 Container區別
- 知道Nginx 是什麼
- 一點Nginx config基礎
目標:
使用Docker 建立Nginx container,並使用該container 跑HTML檔案
Docker官網上提供了三種建立Nginx container的方式
- 使用Docker指令建立
- 使用Dockerfile
- 使用docker-compose.yml
這篇文章先不解釋用docker-compose.yml,接下來為各位分享前兩種方式。
使用Docker指令建立Nginx 環境:
Step1:在你喜歡的資料夾裡,建立一個index.html檔案
index.html 內容<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Docker nginx</title>
</head><body>
Hello world!
</body></html>
Step2:下載Nginx image
打開terminal不需要到任何指定的資料夾, 直接輸入 docker pull nginx
即可下載最新的Nginx
輸入 docker images
可以查看目前在本地所有的docker image
Step3:創建並啟動Nginx container
在terminal內輸入以下指令,粗體字照自己規劃更改
docker run --name container名稱 -p 8080:80 -v index.html所在路徑:
/usr/share/nginx/html -d nginx
指令解釋:
docker run:
創建docker container的指令
--name container名稱:
container名稱自己取
-p 8080:80:
將local 8080 port 指向 container的 80 port
-d nginx:
選擇container要裝的image(在這裡要裝的是nginx)
-v index.html 所在路徑:/var/www:
如下圖
輸入 docker ps
可以查看正在run的container,如果上面的指令創建成功,會看到以下的結果
最後在瀏覽器內輸入 localhost:8080
如下
另外,如果在創建時沒有將 index.html 的資料夾指定給container,也就是說沒有打-v … :/usr/share/nginx/html的話,會出現nginx default的畫面,如下圖
使用Dockerfile建立Nginx環境:
Step1:在你喜歡的資料夾裡,建立一個下面三個檔案,並且將terminal移到該檔案路徑
- index.html
- nginx.conf
- dockerfile
index.html 內容<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Docker nginx</title>
</head><body>
Hello world!
</body></html>nginx.conf 內容參考server{
listen 80 default_server;
listen [::]:80 default_server;
server_name lou.com;
root /usr/share/nginx/html;
index index.html; charset utf-8;
access_log /var/log/nginx/access_log;
error_log /var/log/nginx/error_log;
}dockerfile 內容FROM nginxCOPY index.html /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
dockerfile 內容說明:
FROM nginx
:要安裝的image
COPY index.html /usr/share/nginx/html
:將index.html 複製到nignx內 /var/www目錄下
COPY index.conf /etc/nginx/conf.d/default.conf
:複製conf檔到nginx內
Step2:使用Dockerfile創建image
terminal內輸入 docker build -t image名字:image版本 .
指令解釋:
docker build:
使用Dockerfile創建image的指令
-t image名字:image版本:
自訂image名字跟版本,若沒輸入版本則為預設值latest
.:
dockerfile的路徑,因為我們的terminal已經移到dockerfile的路徑,所以只需打一個 .
輸入 docker images
查看是否創建成功
Step3:創建並啟動 container
因為已經在Dockerfile內把index.html複製到nginx container內了,所以在創建時不需要再輸入複製的指令
docker run --name container名字 -p 8080:80 -d image名字
成功後可以在瀏覽器看到Hello World!