Самостоятельная среда разработки Docker для Laravel

задняя часть PHP Docker Laravel

Давно ничего не писал, сегодня расскажу о том, как собрать Docker окружение, работающее на Laravel.

Наиболее известным на рынке является «ларадок».GitHub.com/Лара док/ла…

Среда разработки Docker PHP. Используйте ссылку:laradock.io

Поскольку он «самостоятельный», мы можем ссылаться на него, чтобы свести к минимуму необходимость запуска Laravel.

Вот основные условия, которые я перечислил:

  1. Программное обеспечение: PHP 7.2, Nginx, MySQL, Composer, NPM или Yarn и т. д.;
  2. Используйте бытовые зеркала, используйте бытовые зеркала, используйте бытовые зеркала, используйте бытовые зеркала.
  3. Его легко расширять и использовать, например, переключение версий PHP в любое время или переключение между Apache и Nginx.

Docker-Compose

Для достижения расширяемости, как у «ларадока», несколько образов ядра собираются вместе с помощью оркестровки Docker-Compose.

php-fpm

Здесь мы используем ускоренный образ «DaoCloud» —7.2-fpm-alpine.

В этой версии используются обаPHP 7.2версия иalpineСвернуть систему, на основе которой могут быть установлены дополнительные инструменты, требуемые средой установки: например,composer,nodejs,python,yarnЖдать.

FROM daocloud.io/php:7.2-fpm-alpine

MAINTAINER coding01 <yemeishu@126.com>

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk add --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        curl-dev \
        imagemagick-dev \
        libtool \
        libxml2-dev \
        postgresql-dev \
        sqlite-dev \
    && apk add --no-cache \
        curl \
        git \
        imagemagick \
        mysql-client \
        postgresql-libs \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install \
        curl \
        iconv \
        mbstring \
        pdo \
        pdo_mysql \
        pdo_pgsql \
        pdo_sqlite \
        pcntl \
        tokenizer \
        xml \
        zip \
    && curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer \
    && apk del -f .build-deps

# 修改 composer 为国内镜像
RUN composer config -g repo.packagist composer https://packagist.laravel-china.org

# install prestissimo
RUN composer global require "hirak/prestissimo"

# install laravel envoy
RUN composer global require "laravel/envoy"

#install laravel installer
RUN composer global require "laravel/installer"

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk update && apk add -u nodejs libpng-dev python

ENV PATH /root/.yarn/bin:$PATH

RUN apk update \
  && apk add curl bash binutils tar \
  && rm -rf /var/cache/apk/* \
  && /bin/bash \
  && touch ~/.bashrc \
  && curl -o- -L https://yarnpkg.com/install.sh | bash \
  && yarn config set registry 'https://registry.npm.taobao.org' \
  && npm install -g cnpm --registry=https://registry.npm.taobao.org

WORKDIR /var/www

которые устанавливаютalpineсистемные плагины, которые мы используемmirrors.aliyun.comОблачное зеркало Алибаба.

php:7.2-fpm-alpineДля конкретного использования см.:Зайдите в чайхану с .IO/packages/01…

nginx

Мы используемnginx, в основном для загрузки конфигурационного файла веб-сайтаnginxсередина.

FROM daocloud.io/nginx:1.13-alpine

MAINTAINER coding01 <yemeishu@126.com>

ADD vhost.conf /etc/nginx/conf.d/default.conf

WORKDIR /var/www

Осталось только соединить изображения. последний взглядdocker-compose.ymlсодержание документа:

version: '2'
services:

  # The Application
  app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ../:/var/www
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"
      - "REDIS_HOST=redis"
      - "REDIS_PORT=6379"

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    ports:
      - 8080:80

  # The Database
  database:
    image: daocloud.io/mysql:5.7.4
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      - "MYSQL_DATABASE=homestead"
      - "MYSQL_USER=homestead"
      - "MYSQL_PASSWORD=secret"
      - "MYSQL_ROOT_PASSWORD=secret"
    ports:
        - "3306:3306"

  redis:
    image: daocloud.io/library/redis:4.0.10-alpine
    command: redis-server --appendonly yes

volumes:
  dbdata:

Попробуй это

Создайте проект Laravel

composer create-project laravel/laravel demo

*Примечание: *Для тестирования можно поставитьvendorпапка иcomposer.lockУдаление файла.

git clone

существуетdemoВ той же папке, что и проект,git cloneНаш самодельный «laraveldocker»:

git clone https://github.com/fanly/laraveldocker.git

Изменить docker-compose.yml

будетdocker-compose.ymlПуть к файлу для выполнения нашего проекта:

app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ../:/var/www

build

существуетlaraveldockerВыполните команду сборки ниже:

docker-compose up

Это все еще довольно быстро

Затем войдите в контейнер

docker exec -it de075c525528 bash

Посмотрим на эффект от установки плагина:

используетhttps://packagist.laravel-china.orgДомашнее зеркало.

Примечание: это зеркало является проектом общественного благосостояния, запущенным совместно сообществом Laravel China, Youpaiyun и Youfan Yuanyang.Он направлен на предоставление стабильных и высокоскоростных домашних зеркал Composer для пользователей PHP.

Рекомендуется использовать

Ссылаться на:Потяните Ravel-China.org/topics/4484…

использоватьyarnилиcnpmУстановите плагин:

генерироватьLaravel key secret:

cp .env.example .env
php artisan key:generate

Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.

Запустите его, чтобы увидеть эффект:

Далее давайте посмотрим на соединение с базой данных, изменим.env:

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Мы используемphp artisan make:authдля создания макетов, представлений регистрации и входа в систему, а также маршрутов для всех интерфейсов аутентификации. Он также генерируетHomeControllerдля обработки запроса входа в приложение. использоватьphp artisan migrateдля загрузки данных.

Смотрим даташит:

На этом этапе объясняется, что мы подключаемMySQLБаза данных в порядке.

Суммировать

В процессе обучения используйте Dockerfile, созданный другими, хотя его можно использовать напрямую, лучше всего, если он может быть самодостаточным.

Создав собственную среду разработки докеров, вы также сможете узнать больше. В будущем он будет продолжать улучшаться и минимизироваться для удовлетворения потребностей разработки.

код размещенgithubДобро пожаловать, чтобы сослаться и предложитьissue:

GitHub.com/где источник/Лара Ви…

Наконец, вы также можете прочитать предыдущую статью об использовании «Ларадока»:

Изучайте Docker с помощью Laradock — Конфигурация

Изучите Docker-HTTPS с Laradock