如何使用docker-compose运行laravel应用程序?

时间:2018-09-19 09:57:20

标签: laravel docker docker-compose

以下是我尝试过的事情,我做错了什么吗?

步骤1。在本地主机上创建一个简单的laravel应用。

composer create-project --prefer-dist laravel/laravel laravel-app 5.6

步骤2。创建docker-compose.yml

version: '3'

services:
    php:
        image: php:7-fpm
        ports: 
          - "3021:8000"
        volumes:
            - ./laravel-app:/app
    composer:
        image: composer:latest
        volumes:
            - ./laravel-app:/app
        working_dir: /app
        command: ["install","php artisan serve --host=0.0.0.0"]
        depends_on:
            - php

在那之后,我运行 docker-compose up --force-recreate -d 并在浏览器中访问 127.0.0.1:3021 ,但我什么也没得到。

>

然后我运行docker-composer日志,它向我显示此错误消息:

Invalid argument php artisan serve --host=0.0.0.0. Use "composer require php artisan serve --host=0.0.0.0" instead to add packages to your composer.json.

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

您正在混合命令。 Composer不“服务”。 Php在dev服务器中有一个内置服务器可以“服务”。

您可以在此处了解更多信息:https://laravel.com/docs/4.2/quick

要真正启动和运行Laravel,请执行以下操作:

1-在laravel-app文件夹中运行此文件:composer install

2-创建具有以下内容的Dockerfile:

FROM php:7
RUN apt-get update -y && apt-get install -y libmcrypt-dev openssl
RUN docker-php-ext-install pdo mcrypt mbstring
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
WORKDIR /app
COPY . /app

CMD php artisan serve --host=0.0.0.0 --port=8000
EXPOSE 8000

3-构建您的docker映像:docker build -t my-laravel-image .

4-最后替换您的docker-compose的内容:

version: '3'
services:
  web:
    image: my-laravel-image
    ports:
        - 3021:8000
    volumes:
        - ./laravel-app:/app

可以在这里找到更完整的教程(不是我的):https://www.techiediaries.com/docker-compose-laravel/

编辑:

要使用正式的撰写图片,您可以执行以下操作:

version: '3'

services:
    composer:
        image: composer:latest
        working_dir: /app
        entrypoint: php artisan serve --host=0.0.0.0
        depends_on:
            - php
        volumes:
            - ./laravel-app:/app
        ports:
          - "3021:8000"

确保./laravel-app包含laravel项目。否则,这将无法正常工作!

答案 1 :(得分:0)

在Laravel应用的主文件夹中,创建一个名为Dockerfile的文件并插入以下代码:

FROM php:7
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo pdo_mysql
WORKDIR /app
COPY . /app
RUN composer install
CMD php artisan serve --host=0.0.0.0 --port=8181
EXPOSE 8181

在Dockerfile的同一主文件夹中,创建一个名为docker-compose.yml的文件,并插入以下代码:

version: '2'
services:
  app:
    build: .
    ports:
      - "8009:8000"
    volumes:
      - .:/app
    env_file: .env
    working_dir: /app
    command: bash -c 'php artisan migrate && php artisan serve --host 0.0.0.0'
    depends_on:
      - db
    links:
      - db
  db:
    image: "mysql:5.7"
    environment:
      - MYSQL_ROOT_PASSWORD=yourpassword
      - MYSQL_DATABASE=yourdbname
      - MYSQL_USER=root
      - MYSQL_PASSWORD=yourpassword
    volumes:
      - ./data/:/var/lib/mysql
    ports:
      - "3306:3306"
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 8090:80
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: yourpassword

打开终端命令行,进入laravel文件夹,然后启动以下命令:

docker.compose build
docker-compose up -d

如果需要创建和迁移数据库,或使用其他命令,请以这种方式启动Laravel命令:

docker-compose运行应用程序php artisan 该应用程序将通过以下地址提供:http://0.0.0.0:8009

来源:https://medium.com/@pierangelo1982/dockerize-an-existing-laravel-application-with-docker-compose-a45eb7956cbd