怎樣利用Dockerfile檔案部署PHP專案

2022-07-25 18:00:51
本篇文章主要給大家介紹了關於利用Dockerfile檔案部署專案的相關知識,環境部署一直是一個很大的問題,無論是開發環境還是生產環境,但是Docker將開發環境和生產環境以輕量級方式打包,提供了一致的環境,下面一起來看一下,希望對大家有幫助。

(推薦教學:)

一、當前專案結構

/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 當前引數必須的

六、 構建專案出現的問題

  • 每次重新構建專案,都會新建立一個映象檔案

  • 如果構建映象檔案時,指定的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專案的詳細內容,更多請關注TW511.COM其它相關文章!