Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Laravel docker集装箱&;MySQL数据库和Vue数据库?_Laravel_Docker_Vue.js_Docker Compose_Dockerfile - Fatal编程技术网

如何使用Laravel docker集装箱&;MySQL数据库和Vue数据库?

如何使用Laravel docker集装箱&;MySQL数据库和Vue数据库?,laravel,docker,vue.js,docker-compose,dockerfile,Laravel,Docker,Vue.js,Docker Compose,Dockerfile,我有一个应用程序,它使用Vue CLI作为前端,使用Laravel作为后端。现在我正试图使用docker在服务器上启动我的应用程序 我的docker技能只允许我做一件事:Vue docker容器。但就我必须使用Laravel作为后端而言,我也必须为此创建一个容器(+当然是MySQL) 下面是我得到的:Dockerfile FROM node:lts-alpine WORKDIR /app COPY package*.json ./ RUN npm install EXPOSE 8080 CMD

我有一个应用程序,它使用Vue CLI作为前端,使用Laravel作为后端。现在我正试图使用docker在服务器上启动我的应用程序

我的docker技能只允许我做一件事:Vue docker容器。但就我必须使用Laravel作为后端而言,我也必须为此创建一个容器(+当然是MySQL)

下面是我得到的:Dockerfile

FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN  npm install
EXPOSE 8080
CMD ["npm", "run", "serve"]
docker compose.yml

version: '3'
services:
    web:
        build: .
        stdin_open: true
        tty: true
        ports: 
            - "8080:8080"
        volumes:
            - "/app/node_modules" 
            - ".:/app"
问题是我知道如何将Laravel连接到Dockerfile。这在我的脑海里根本不存在


也许我应该使用Ubuntu,而不仅仅是node?无论如何,我再次请求您的支持

您需要4个容器,定义在
docker compose
文件中:

  • 前端(您已有的Vue应用程序)
  • 后端(Laravel应用程序)
  • 网络服务器(如Nginx或Apache)
  • 数据库(MySQL)
可以将“web服务器”和“后端”容器组合成一个容器,但这通常是错误的建议。 您的撰写文件将类似于以下内容:

version: '3'
services:
  frontend:
    build: ./frontend
    ports: 
      - 8080:8080
    volumes:
      - ./frontend:/app

  backend:
    build: ./backend
    volumes:
      - ./backend:/var/www/my_app
    environment:
      DB_HOST=db
      DB_PORT=3306

  webserver:
    image: nginx:alpine
    ports:
      - 8000:8000
    volumes:
      - ./backend:/var/www/my_app

  database:
    image: mariadb:latest
    container_name: db
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_ROOT_PASSWORD: dbpass
    volumes:
      - ./sql:/var/lib/mysql

其中,
/backend
包含Laravel应用程序代码,
/frontend
包含Vue应用程序,并且两者都包含
Dockerfile
。有关所需每张图像的具体说明,请参阅。这将向主机系统公开3个端口:
8080
(Vue应用程序)、
8000
(Laravel应用程序)和
3306
(MySQL)

或者,如果在Laravel容器中使用artisan cli的
service
命令,则可以省略web服务器,这与您在Vue应用程序的
Dockerfile
中所做的类似

图像必须包含类似于
CMD php artisan-service--host=0.0.0.0--port=8000的内容,根据您需要执行以下步骤

  • 使项目文件夹如下所示:(
    d:
    目录,
    f:
    文件)
  • d:后端
    d:前端
    d:等等
    d:nginx
    d:conf.d
    f:default.conf.nginx
    d:php
    f:.gitignore
    d:dockerize
    d:后端
    f:Dockerfile
    f:docker-compose.yml
    
  • 添加docker compose.yml
  • 版本:“3”
    服务:
    www:
    图片:nginx:alpine
    卷数:
    -./etc/nginx/conf.d/default.conf.nginx:/etc/nginx/conf.d/default.conf
    端口:
    - 81:80
    取决于:
    -后端
    -前端
    前端:
    图:节点:当前阿尔卑斯山
    用户:${UID}:${UID}
    工作目录:/home/node/app
    卷数:
    -/前端:/home/node/app
    环境:
    节点环境:开发
    命令:“npm运行服务”
    后端:
    建造:
    上下文:dockerize/backend
    #这种方式容器代表当前用户与主机交互。
    # !!! 注意:$UID是一个shell_uu变量,而不是一个环境变量!
    #要使其作为shell变量可用,请确保在~/.bashrc(./.zshrc等)中包含此变量:
    #导出UID=“$UID”
    用户:${UID}:${UID}
    卷数:
    -/后端:/app
    #对php.ini的自定义调整
    #一,。E“xdebug.remote_host”调试停靠的应用程序
    -/etc/php:/usr/local/etc/php/local.conf.d/
    环境:
    #为php添加自定义配置文件以进行扫描
    PHP_INI_SCAN_DIR:“/usr/local/etc/PHP/conf.d/:/usr/local/etc/PHP/local.conf.d/”
    命令:“php artisan serve--host=0.0.0.0--port=8080”
    mysql:
    图片:mysql:5.7.22
    容器名称:mysql
    重新启动:除非停止
    tty:是的
    端口:
    - "4306:3306"
    卷数:
    -./etc/mysql:/var/lib/mysql
    环境:
    MYSQL_数据库:tor
    MYSQL\u用户:root
    MYSQL\u密码:root
    MYSQL\u ROOT\u密码:ROOT
    服务标签:dev
    服务名称:mysql
    
  • 添加default.conf.nginx
  • 服务器{
    听81;
    服务器名称前端;
    error\u log/var/log/nginx/error.log调试;
    地点/{
    代理通行证http://frontend:8080;
    }
    位置/sockjs节点{
    代理通行证http://frontend:8080;
    代理设置头主机$Host;
    #下面的行使ws://localhost/sockjs node/…URL工作,支持热重新加载
    proxy_http_版本1.1;
    代理设置头升级$http\U升级;
    代理设置头连接“升级”;
    }
    地点/空气污染指数/{
    #在后端,请求URI将不包含/api前缀,
    #这就是我们想要的纯api项目
    代理通行证http://backend:8080/;
    代理设置头主机本地主机;
    }
    }
    
  • 添加Dockerfile
  • 来自php:fpm
    运行apk add--no cache$PHPIZE_DEPS oniguruma dev libzip dev curl dev\
    &&docker php ext安装pdo_mysql mbstring zip curl\
    &&pecl安装xdebug redis\
    &&docker php ext启用xdebug redis
    运行mkdir/app
    卷/应用程序
    WORKDIR/app
    曝光8080
    CMD php artisan serve--host=0.0.0.0--port=8080
    
  • 别忘了将vue.config.js添加到您的frontend文件夹中
  • //vue.config.js
    module.exports={
    //选项。。。
    开发服务器:{
    disableHostCheck:true,
    主机:“localhost”,
    标题:{
    “访问控制允许来源”:“*”,
    “访问控制允许标头”:“来源,X请求,内容类型,接受”
    },
    监视选项:{
    民意调查:对
    },
    代理:'http://localhost/api',
    } 
    }
    
  • 运行
    sudo文档