利用Dockerfile文件部署php項目的全過程

一、當前項目結構

/project_name
|– /dist          #— 項目編譯後輸出的目錄
|– /config        #— 配置文件目錄
|—|
|—|– Dockerfile #— Dockerfile文件
|—|– nginx.conf #— nginx配置文件

 nginx.conf文件

二、創建Dockerfile文件

# 從ubuntu鏡像中構建應用
FROM ubuntu:latest
 
# 設置鏡像的制作者
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 默認安裝路徑 /etc/nginx/
# php-fpm 默認安裝路徑 /etc/php/fpm/
# nginx配置文件存放目錄 /etc/nginx/conf.d/ 
# nginx默認項目路徑 /var/www/html/
 
# 在上傳目錄之前,可以先刪除舊項目代碼
# RUN ["rm", "-rf", "/var/www/project_name/"]
 
# 項目文件上傳, 把當前目錄下的所有文件上傳到/var/www/project_name目錄下
COPY ./dist/ /var/www/project_name/
 
# 把當前項目的nginx.conf配置文件上傳到/etc/nginx/conf.d/目錄下
COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf
 
# 容器運行時啟動應用
# php-fpm7.4 -D : 啟動fpm並在後臺運行
# nginx -g 'daemon off;' : 啟動nginx, 前臺執行, 並保持進程常駐, 避免docker容器啟動後就自動關閉瞭
CMD php-fpm7.4 -D && nginx -g 'daemon off;'

三、生成鏡像文件

# 在項目project_name目錄下執行命令
 
docker build -f config/Dockerfile -t myproject:latest .
 
# 註:  最後的參數表示路徑,  . : 表示當前目錄下
# -f 指定Dockerfile文件所在目錄, 如果是相對路徑,則從當前目錄下查找
# -t 重新指定鏡像的名稱和標簽  <name>:<tag>

四、使用鏡像文件,並啟動容器

# 啟動鏡像
 
docker run -itd -p 80:8080 myproject:latest
 
# --name <name> 為啟動的容器指定名稱,不指定會默認隨機一個名稱
# -p 訪問的端口:鏡像內程序的端口
# -d 表示當前容器在後臺運行
# -it 指定要啟動的鏡像名稱和標簽 <name>:<tag>
# -v 本地路徑:鏡像內的路徑   可以將本地路徑和容器內的路徑映射,可以即時修改文件即時生效,方便測試
# -v 命令可以有多條
# --rm 當前容器退出後將自動刪除
# eg:  -v E:/logs/:/var/logs/nginx/   把nginx的日志文件映射到本地

註: nginx + php-fpm 環境搭建到這裡已經完成。

啟動運行容器後, 打開本地瀏覽器:  http://localhost/  就可以訪問瞭

五、連接已啟動的鏡像容器

# 查看正在運行的容器
 
docker ps
 
# CONTAINER ID    IMAGE  ...
# 01f82e69c455    myproject  ...
 
docker exec -it 01f82e69c455 /bin/bash
 
# -it 需要連接的容器的CONTAINER ID
# /bin/bash 當前參數必須的

六、 構建項目出現的問題

        1.  每次重新構建項目,都會新創建一個鏡像文件

        2.  如果構建鏡像文件時,指定的name和標簽與原來的鏡像一樣,則原來的鏡像不會刪除,會被更名為<none>:<none> 的鏡像文件

# 已找到相關命令解決上面兩個問題, 在創建相同名稱的新鏡像文件時,避免舊鏡像殘留
# 可以先刪除舊鏡像文件
 
docker rmi -f <name>:<tag>  
# 當前命令可以強制刪除指定名稱和tag的鏡像文件

七、刪除容器、刪除鏡像文件

# 刪除運行的容器
docker rm -f <name>
# -f 強制刪除,如果容器正在運行也會被刪除
# -v 刪除當前容器掛載的數據卷
 
# 刪除所有沒有運行的容器
docker rm $(docker ps -a -q)
 
# 刪除本地鏡像文件
docker rmi -f <name>:<tag>
 

八、鏡像倉庫地址  

1、ubuntu + nginx + php-fpm7.4 版本的運行環境

命令拉取鏡像:

docker pull freedomx20/nginx-fpm7.4:1.0

docker鏡像倉庫:

Docker Hub (ubuntu + nginx + php-fpm7.4 環境)

https://hub.docker.com/r/freedomx20/nginx-fpm7.4

總結

到此這篇關於利用Dockerfile文件部署php項目的文章就介紹到這瞭,更多相關Dockerfile文件部署php內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: