docker项目部署 php_Docker部署PHP+Vue项目

本文详细介绍了如何利用docker-compose部署包含PHP、Vue、MySQL、Nginx、PHPMyAdmin、Redis和Mongo的项目。从创建本地目录结构到配置docker-compose.yaml,再到前端项目的打包与部署,以及解决拉取镜像速度慢和iptables问题,提供了完整的步骤和源码地址。
摘要由CSDN通过智能技术生成

本文将介绍如何使用docker镜像 快速部署 php+vue 项目.文末提供源码地址

本地创建Docker映射目录

—— vue_demo # Demo项目

—— php_vue

—— docker-compose.yaml

—— nginx

———— apps # 项目代码

———— conf # nginx配置文件

—————— nginx.conf

———— log # nginx

———— vhost # 虚拟机配置目录

—————— default.conf

创建docker-compose.yaml

version : "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文件

echo '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规则就会被创建出来

项目源码

不足 & 后续跟进

上述部署还是不够快,正确打开方式应该是创建自己centos项目镜像

项目代码迭代还可以更自动一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值