docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog
創建Docker映射目錄——?vue_demo?????????#?Demo項目
——?php_vue
——?docker-compose.yaml
——?nginx
————?apps???????????#?項目代碼
————?conf???????????#?nginx配置文件
——————?nginx.conf
————?log????????????#?nginx
————?vhost??????????#?虛擬機配置目錄
——————?default.conf
創建docker-compose.yamlversion?:?"3"?#docker-compose的版本services:?#容器的集合
mysql:?#項目名稱
image:?mysql:5.7?#鏡像名稱,如果是通過dockerfile創建的可以使用build屬性
container_name:?mysql??#容器名稱,如果沒有這個屬性的話,docker-compose會隨機分配一個名字給容器
privileged:?true????#允許操作的表示,如果不加的話會出現類似,permission?deny的錯誤
ports:
-?3307:3306??#開放宿主機和容器的映射端口
environment:
MYSQL_ROOT_PASSWORD:?root??#mysql鏡像中的環境變量
php:
image:?php:7.2-fpm??????????????container_name:?php??????????????privileged:?true
ports:
-?9001:9000
links:
-?mysql??#容器之間進行關聯
volumes:
-?./nginx/apps:/usr/share/nginx/html??#掛載卷,需要注意的是,php在以模塊的形式加載到nginx的時候,需要他們兩個的目錄結構一致,否則nginx無法加載php,但是?html等靜態問價可以正常訪問。
nginx:
image:??nginx???????????????container_name:?nginx???????????????privileged:?true
links:
-?php???????????????ports:
-?8088:80
volumes:
-?./nginx/vhost:/www/nginx/vhost???????????????????????-?./nginx/conf/nginx.conf:/etc/nginx/nginx.conf???????????????????????-?./nginx/log:/www/nginx/log???????????????????????-?./nginx/apps:/usr/share/nginx/html??????phpmyadmin:
image:?phpmyadmin/phpmyadmin??????????????container_name:?phpmyadmin??????????????privileged:?true
links:
-?mysql??????????????ports:
-?7001:80
environment:
MYSQL_ROOT_PASSWORD:?root??????????????????????PMA_HOST:?mysql??????redis:
image:?redis:4.0.14??????????????container_name:?redis??????????????privileged:?true
ports:
-?6379:6379
mongo:
image:?mongo??????????????restart:?always??????????????ports:
-?27017:27017
建立容器,執行命令?docker-compose up -d
創建前端項目
使用vue create vue_demo或vue ui創建項目vue_demo
打包項目cd vue_demo && npm run build,復制?dist文件夾到?php_vue/nginx/apps下測試?curl localhost:9099?返回html代碼
創建php文件<?phpecho ?'hello?Docker';測試?curl localhost:8088?返回 hello Docker
過程中的疑難雜癥
image拉取速度過慢
解決方法 - 修改倉庫源
創建、修改?/etc/docker/daemon.json?文件,修改為如下形式vi?/etc/docker/daemon.json??????????#?編輯daemon.json
{
"registry-mirrors":?["http://hub-mirror.c.163.com"]
}
systemctl?restart?docker????????????#?重啟docker服務
國內加速地址有:docker-compose 拉取鏡像,成功之后就不會重復拉取。
所以導出現某個鏡像速度慢、卡死。?Ctrl + c終止換源,重啟docker再執行命令?docker-compose up -d
docker 創建 iptables鏈 報錯… iptables --wait -t nat -I DOCKER -i br-d38d92300109 -j RETURN:iptables: No chain/target/match by that name.
docker 服務啟動的時候,docker服務會向iptables注冊一個鏈,以便讓docker服務管理的containner所暴露的端口之間進行通信
通過命令?iptables -L?可以查看iptables鏈
在開發環境中,如果你刪除了iptables中的docker鏈,或者iptables的規則被丟失了(例如重啟firewalld),docker就會報iptables error例如:failed programming external connectivity … iptables: No chain/target/match by that name
要解決這個問題,只要?重啟docker服務,之后,正確的iptables規則就會被創建出來
總結
以上是生活随笔為你收集整理的docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 升级到 iOS 16.3 之后多项苹果
- 下一篇: iPhone 14引导式访问按三下没反应