栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

Docker部署PHP+Vue项目

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker部署PHP+Vue项目

本文将介绍如何使用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文件

测试 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中国区官方镜像| https://registry.docker-cn.com
  • 网易| http://hub-mirror.c.163.com
  • ustc | https://docker.mirrors.ustc.edu.cn
  • 中国科技大学 | https://docker.mirrors.ustc.edu.cn
  • 阿里云 | https://cr.console.aliyun.com

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

项目源码

https://github.com/ruidao/demo/tree/master/Docker/php_vue

不足 & 后续跟进
  • 上述部署还是不够快,正确打开方式应该是创建自己centos项目镜像
  • 项目代码迭代还可以更自动一点
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号