利用Dockerfile文件部署php項(xiàng)目的全過(guò)程
一、當(dāng)前項(xiàng)目結(jié)構(gòu)
/project_name
|-- /dist #--- 項(xiàng)目編譯后輸出的目錄
|-- /config #--- 配置文件目錄
|---|
|---|-- Dockerfile #--- Dockerfile文件
|---|-- nginx.conf #--- nginx配置文件
nginx.conf文件


二、創(chuàng)建Dockerfile文件
# 從ubuntu鏡像中構(gòu)建應(yīng)用 FROM ubuntu:latest # 設(shè)置鏡像的制作者 MAINTAINER congjiang # 安裝nginx + php-fpm7.4 RUN apt-get update && apt-get upgrade && apt-get install -y nginx php7.4-fpm vim # 上一條命令安裝nginx和fpm # nginx 默認(rèn)安裝路徑 /etc/nginx/ # php-fpm 默認(rèn)安裝路徑 /etc/php/fpm/ # nginx配置文件存放目錄 /etc/nginx/conf.d/ # nginx默認(rèn)項(xiàng)目路徑 /var/www/html/ # 在上傳目錄之前,可以先刪除舊項(xiàng)目代碼 # RUN ["rm", "-rf", "/var/www/project_name/"] # 項(xiàng)目文件上傳, 把當(dāng)前目錄下的所有文件上傳到/var/www/project_name目錄下 COPY ./dist/ /var/www/project_name/ # 把當(dāng)前項(xiàng)目的nginx.conf配置文件上傳到/etc/nginx/conf.d/目錄下 COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf # 容器運(yùn)行時(shí)啟動(dòng)應(yīng)用 # php-fpm7.4 -D : 啟動(dòng)fpm并在后臺(tái)運(yùn)行 # nginx -g 'daemon off;' : 啟動(dòng)nginx, 前臺(tái)執(zhí)行, 并保持進(jìn)程常駐, 避免docker容器啟動(dòng)后就自動(dòng)關(guān)閉了 CMD php-fpm7.4 -D && nginx -g 'daemon off;'
三、生成鏡像文件
# 在項(xiàng)目project_name目錄下執(zhí)行命令 docker build -f config/Dockerfile -t myproject:latest . # 注: 最后的參數(shù)表示路徑, . : 表示當(dāng)前目錄下 # -f 指定Dockerfile文件所在目錄, 如果是相對(duì)路徑,則從當(dāng)前目錄下查找 # -t 重新指定鏡像的名稱和標(biāo)簽 <name>:<tag>
四、使用鏡像文件,并啟動(dòng)容器
# 啟動(dòng)鏡像 docker run -itd -p 80:8080 myproject:latest # --name <name> 為啟動(dòng)的容器指定名稱,不指定會(huì)默認(rèn)隨機(jī)一個(gè)名稱 # -p 訪問(wèn)的端口:鏡像內(nèi)程序的端口 # -d 表示當(dāng)前容器在后臺(tái)運(yùn)行 # -it 指定要啟動(dòng)的鏡像名稱和標(biāo)簽 <name>:<tag> # -v 本地路徑:鏡像內(nèi)的路徑 可以將本地路徑和容器內(nèi)的路徑映射,可以即時(shí)修改文件即時(shí)生效,方便測(cè)試 # -v 命令可以有多條 # --rm 當(dāng)前容器退出后將自動(dòng)刪除 # eg: -v E:/logs/:/var/logs/nginx/ 把nginx的日志文件映射到本地
注: nginx + php-fpm 環(huán)境搭建到這里已經(jīng)完成。
啟動(dòng)運(yùn)行容器后, 打開(kāi)本地瀏覽器: http://localhost/ 就可以訪問(wèn)了
五、連接已啟動(dòng)的鏡像容器
# 查看正在運(yùn)行的容器 docker ps # CONTAINER ID IMAGE ... # 01f82e69c455 myproject ... docker exec -it 01f82e69c455 /bin/bash # -it 需要連接的容器的CONTAINER ID # /bin/bash 當(dāng)前參數(shù)必須的
六、 構(gòu)建項(xiàng)目出現(xiàn)的問(wèn)題
1. 每次重新構(gòu)建項(xiàng)目,都會(huì)新創(chuàng)建一個(gè)鏡像文件
2. 如果構(gòu)建鏡像文件時(shí),指定的name和標(biāo)簽與原來(lái)的鏡像一樣,則原來(lái)的鏡像不會(huì)刪除,會(huì)被更名為<none>:<none> 的鏡像文件
# 已找到相關(guān)命令解決上面兩個(gè)問(wèn)題, 在創(chuàng)建相同名稱的新鏡像文件時(shí),避免舊鏡像殘留 # 可以先刪除舊鏡像文件 docker rmi -f <name>:<tag> # 當(dāng)前命令可以強(qiáng)制刪除指定名稱和tag的鏡像文件
七、刪除容器、刪除鏡像文件
# 刪除運(yùn)行的容器 docker rm -f <name> # -f 強(qiáng)制刪除,如果容器正在運(yùn)行也會(huì)被刪除 # -v 刪除當(dāng)前容器掛載的數(shù)據(jù)卷 # 刪除所有沒(méi)有運(yùn)行的容器 docker rm $(docker ps -a -q) # 刪除本地鏡像文件 docker rmi -f <name>:<tag>
八、鏡像倉(cāng)庫(kù)地址
1、ubuntu + nginx + php-fpm7.4 版本的運(yùn)行環(huán)境
命令拉取鏡像:
docker pull freedomx20/nginx-fpm7.4:1.0
docker鏡像倉(cāng)庫(kù):
Docker Hub (ubuntu + nginx + php-fpm7.4 環(huán)境)
https://hub.docker.com/r/freedomx20/nginx-fpm7.4
總結(jié)
到此這篇關(guān)于利用Dockerfile文件部署php項(xiàng)目的文章就介紹到這了,更多相關(guān)Dockerfile文件部署php內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Dockerfile構(gòu)建Redis鏡像的方法實(shí)現(xiàn)(yum方式)
- Docker利用DockerFile創(chuàng)建部署NVIDIA+PyTorch容器的詳細(xì)過(guò)程
- Dockerfile文件詳細(xì)介紹
- Dockerfile的CMD指令用法
- 使用Dockerfile實(shí)現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動(dòng)的方法
- .NETCore Docker實(shí)現(xiàn)容器化與私有鏡像倉(cāng)庫(kù)管理
- Docker私有倉(cāng)庫(kù)管理和刪除本地倉(cāng)庫(kù)中的鏡像
- Docker 倉(cāng)庫(kù)管理和Docker Dockerfile詳解
相關(guān)文章
KindEditor在php環(huán)境下上傳圖片功能集成的方法示例
這篇文章主要介紹了PHP環(huán)境下如何實(shí)現(xiàn)使用KindEditor編輯器上傳圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
PHP商品秒殺問(wèn)題解決方案實(shí)例詳解【mysql與redis】
這篇文章主要介紹了PHP商品秒殺問(wèn)題解決方案,結(jié)合實(shí)例形式詳細(xì)分析了php結(jié)合mysql與redis實(shí)現(xiàn)商品秒殺功能的相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下2019-07-07
php自定義類(lèi)fsocket模擬post或get請(qǐng)求的方法
這篇文章主要介紹了php自定義類(lèi)fsocket模擬post或get請(qǐng)求的方法,涉及php使用socket模擬post及get請(qǐng)求的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
解析數(shù)組非數(shù)字鍵名引號(hào)的必要性
以下是對(duì)數(shù)組非數(shù)字鍵名引號(hào)的必要性進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08
php獲取服務(wù)器操作系統(tǒng)相關(guān)信息的方法
這篇文章主要介紹了php獲取服務(wù)器操作系統(tǒng)相關(guān)信息的方法,涉及php針對(duì)服務(wù)器端預(yù)定義變量及系統(tǒng)函數(shù)的使用技巧,需要的朋友可以參考下2016-10-10
如何批量替換相對(duì)地址為絕對(duì)地址(利用bat批處理實(shí)現(xiàn))
你的url鏈接是相對(duì)路徑你想把他批量替換成絕對(duì)路徑該怎么做呢?下面與大家分享下具體的實(shí)現(xiàn)思路及代碼,只需點(diǎn)擊bat文件,全部頁(yè)面里的相對(duì)地址就會(huì)變成絕對(duì)地址了2013-05-05

