Create Dockerfile
產出簡單的dockerfile
- 先產出簡單的
dockerfile
,再添加相關指令
FROM alpine:3.9
- 將
dockerfile
轉換成image
再用此image
生成container
1 | docker build -t dockerfile . |
嘗試透過一般流程指令安裝nginx
1 | apk update upgrade |
問題一
nginx: [emerg] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)
原因是找不到nginx.pid,經檢查是沒有/run/nginx 這個資料夾,所以nginx無法執行成功
1 | mkdir -p /run/nginx |
問題二
測試 http://localhost:8080/,依舊不行
原因是設port 8080:8080 ,但nginx裡設定為80,所以添加一個設定檔
1 | cat << EOF > /etc/nginx/conf.d/localhost.conf |
如此一來會多了一個檔案 /etc/nginx/conf.d/localhost.conf
且指向 /var/www
,現在給一個index.html
echo hi >> /var/www/index.html
執行 nginx -s reload
問題三
nginx: [error] invalid PID number "" in "/run/nginx/nginx.pid"
原因是只有創建資料夾,還尚未啟用nginx ,來啟用nginx
nginx -c /etc/nginx/nginx.conf
###安裝nginx成功後需將指令寫進dockerfile
1 | FROM alpine:3.9 |
一次 command
,在 dockerfile
就是 RUN
中間新增兩個檔案,是先把檔案創建好,再COPY進去
最後給一個要執行的指令 ,使用 nginx -g "daemon off;"
,是為了能正確在容器上正常執行,需要保持 daemon off;
###測試是否能執行
因為要執行在「背景」,跟剛剛run的指令不一樣
1 | docker build -t dockerfile . |
接著可以再docker ps 中檢查