十二 Dockerfile實戰 Nginx

2021-10-25 01:49:24 字數 3463 閱讀 2430

文章目錄

構建nginx映象

1.nginx安裝步驟

2.dockerfile檔案編寫

3.注意事項及dockerfile編寫最佳實踐

a、盡量讓映象檔案更小

b、儘量減少dockerfile指令

c、在測試中編寫dockerfile

d、dockerfile常用指令

4.構建基礎映象(nginx) 

5.以資料卷掛載方式啟動nginx容器

a.建立本地目錄,用於存放nginx的相關檔案資訊

b.檢視nginx-web執行容器資訊

c.測試訪問

安裝依賴包

編譯安裝nginx三步驟:編譯、make、make install

配置配置檔案和環境變數

清理殘留檔案,比如build完成後,要刪掉原始碼包、yum快取等。

因為我們知道,乙個dockerfile指令,就是一層映象,我們使用shell裡面的&&符號進行拼接成一行,讓run指令盡可能少。

我們隨便啟動乙個容器:docker run -it  centos,進入容器後,就可以對我們寫的dockerfile指令進行逐行執行

基本上按照**中的順序進行編寫

[root@web build_dockerfile]# docker build -f dockerfile-nginx  -t nginx:1.0 .
注意:命令最後面乙個點,用於指定docker build的上下文,.為當前目錄,就是在build映象時,如果有涉及到需要拷貝檔案之類的,都是從當前目錄拷貝。

其中:www: 目錄將對映為 nginx 容器配置的虛擬目錄。

logs: 目錄將對映為 nginx 容器的日誌目錄。

conf: 目錄裡的配置檔案將對映為 nginx 容器的配置檔案。

[root@web build_dockerfile]# docker run -d -p 8818:80 --name nginx-web \

-v /data/nginx/www:/usr/local/nginx/html \

-v /data/nginx/conf/vhost:/usr/local/nginx/conf/vhost \

nginx:1.0

其中,相關命令列引數的含義。

--rm:容器終止執行後,自動刪除容器檔案;(這裡沒有使用)

--name nginx-web:容器的名字叫做nginx-web,名字自行定義;

-p: 埠進行對映,將本地 8818 埠對映到容器內部的 80 埠;

-d:容器啟動後,在後台執行

-v /data/nginx/www:/usr/local/nginx/html :將本地/data/nginx/www目錄掛載到容器/usr/local/nginx/html目錄上

-v /data/nginx/conf/vhost:/usr/local/nginx/conf/vhost :將本地/data/nginx/conf/vhost目錄掛載到容器/usr/local/nginx/conf/vhost目錄上

日誌及配置檔案掛載啟動 

docker run -d --name nginx03 -p 83:80 -v /data/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf -v /data/nginx/conf/vhost/:/usr/local/nginx/conf/vhost/ -v /data/nginx/logs/:/data/logs/ nginx:v1
在瀏覽器中開啟http://ip:埠,效果如下

我們可以進入到虛擬目錄下(/data/nginx/www/)做重新修改index.html檔案,檢視訪問是否會發生變化!如果在訪問時出現403錯誤,應該是index.html檔案許可權不足,給成644就行。

index.html內容如下

機會遠比安穩重要,事業遠比金錢重要,未來遠比今天重要。

實踐是ok的,一切都是期望的樣子!

Dockerfile實戰例子

from flask import flask def index return hello world if name main 接下來實現乙個dockerfile,構造python映象 from python 3.6 run pip install flask expose 5000 建立映象 ...

DockerFile 詳細教程及實戰

dockerfile 構建檔案,定義了一切步驟,源 dockerimages 通過 dockerfile 構建生成映象,最終發布和執行的產品 docker 容器 映象執行起來的容器 每個保留關鍵字 指令 都必須是大寫字母 從上到下的順序執行 每乙個指令都會建立提交乙個新的映象層,並提交。from 基...

Spring Cloud(十二)Zuul實戰

1 建立乙個eureka server工程,專案名稱 eureka server 2 建立乙個eureka client 服務提供者 工程,專案名稱 eureka client1 工程eureka server和eureka client1 建立請參考 spring cloud 三 eureka實戰...