Как запустить приложение laravel с помощью docker-compose? - PullRequest
0 голосов
/ 19 сентября 2018

Вот что я пробовал, я что-то не так делаю?

step1.создайте простое приложение laravel на localhost.

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

step2.create 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-воссоздать -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 голосов
/ 21 сентября 2018

в главной папке вашего приложения 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 run app php artisan Приложение будет доступно по адресу http://0.0.0.0:8009

Источник: https://medium.com/@pierangelo1982/dockerize-an-existing-laravel-application-with-docker-compose-a45eb7956cbd

0 голосов
/ 19 сентября 2018

Вы смешиваете команды.Композитор не «служит».Php имеет встроенный сервер разработки для "обслуживания".

Подробнее об этом можно прочитать здесь: https://laravel.com/docs/4.2/quick

Чтобы запустить и запустить Laravel, выполните следующие действия:

1 - Запустите это в laravel-appпапка: composer install

2 - Создайте файл Docker со следующим содержимым:

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 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.В противном случае это не сработает!

...