Используйте docker-compose для создания среды Laravel (3)

PHP Docker Laravel Composer

group_5622_0
group_5622_0

Со вторым"Используйте Docker для создания простой веб-среды Java (2)", я научился создавать среду Docker с помощью одного образа. В этой статье в основном рассказывается, как использовать "docker-compose". Цели:Настроить среду разработки Laravel

Установка Ларавеля

Laravel позволяет нам писать элегантный код
PHP Framework для веб-художников

Изучение Laravel или PHP требует использования composer.

Composer — это инструмент управления зависимостями для PHP. Он позволяет вам объявить кодовые базы, от которых зависит ваш проект, и установит их для вас в вашем проекте.
Composer не является менеджером пакетов. Да, это включает в себя «пакеты» и «библиотеки», но они управляются для каждого проекта отдельно, устанавливаясь в какой-либо каталог вашего проекта (например, поставщик). По умолчанию он ничего не устанавливает глобально. Так что это просто управление зависимостями.

Эта идея не нова, Composer во многом вдохновлен npm узла и сборщиком ruby. В то время не было подобного инструмента под PHP.

Composer решит проблему для вас следующим образом:

а) У вас есть проект, который зависит от нескольких библиотек.

б) Некоторые из этих библиотек зависят от других библиотек.

c) вы объявляете, от чего зависите.

г) Composer определит, какие версии пакетов нужно установить, и установит их (загрузит в свой проект).
Ссылаться на:docs.PHP composer.com/00-intro.contracts…

composer

1. Установите с помощью команды php

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Узнать больше:getcomposer.org/download/

2. Используйте ускорение полного изображения Packagist / Composer China.

Изменить глобальный файл конфигурации композитора (рекомендуется)

composer config -g repo.packagist composer https://packagist.phpcomposer.com

Узнать больше:pkg.phpcomposer.com/

3. Параллельная установка композитора

composer global require hirak/prestissimo

WX20170912-154506@2x
WX20170912-154506@2x

Скачай с божьей помощью! ! !

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

Инструменты можно установить через Laravel:

composer global require "laravel/installer"

Затем вы можете использоватьlaravel newКоманда устанавливает проект Laravel, например:

laravel new blog

Его также можно создать с помощью композитора:

composer create-project --prefer-dist laravel/laravel blog

Узнать больше:Потяните Ravel-China.org/docs/5.4/in…

Собрать образ php + apache

1. Выберите образ PHP, предоставленный DaoCloud, в качестве базового образа проекта.

 FROM daocloud.io/php:7.1.8-apache

2. Заменить источник 163:

 #更新apt-get源 使用163的源
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
    echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
    echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

3. Установите зависимости PHP, необходимые приложению Laravel, с помощью сценария установки.

# APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加
RUN apt-get update \
    && apt-get install -y \
        libmcrypt-dev \
        libz-dev \
        git \
        wget \
        libpcre3-dev \

    # 官方 PHP 镜像内置命令,安装 PHP 依赖
    && docker-php-ext-install \
        mcrypt \
        mbstring \
        pdo_mysql \
        zip \

    # 用完包管理器后安排打扫卫生可以显著的减少镜像大小
    && apt-get clean \
    && apt-get autoclean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \

    # 安装 Composer,此物是 PHP 用来管理依赖关系的工具
    && curl -sS https://getcomposer.org/installer \
        | php -- --install-dir=/usr/local/bin --filename=composer \

    # 国内镜像加速
    && composer config -g repo.packagist composer https://packagist.phpcomposer.com
    && composer global require hirak/prestissimo

4. Создайте структуру каталогов Laravel:

# 开启 URL 重写模块
# 配置默认放置 App 的目录
RUN a2enmod rewrite \
    && mkdir -p /app \
    && rm -fr /var/www/html \
    && ln -s /app/public /var/www/html

WORKDIR /app

5. Загрузите пакет зависимостей композитора

# 预先加载 Composer 包依赖,优化 Docker 构建镜像的速度
COPY ./composer.json /app/
COPY ./composer.lock /app/
RUN composer install  --no-autoloader --no-scripts

Итоговый файл Dockerfile выглядит так:

FROM daocloud.io/php:7.1.8-apache

#更新apt-get源 使用163的源
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
    echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
    echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
    echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

# APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加
RUN apt-get update \
    && apt-get install -y \
        libmcrypt-dev \
        libz-dev \
        git \
        wget \
        libpcre3-dev \

    # 官方 PHP 镜像内置命令,安装 PHP 依赖
    && docker-php-ext-install \
        mcrypt \
        mbstring \
        pdo_mysql \
        zip \


    # 用完包管理器后安排打扫卫生可以显著的减少镜像大小
    && apt-get clean \
    && apt-get autoclean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \

    # 安装 Composer,此物是 PHP 用来管理依赖关系的工具
    && curl -sS https://getcomposer.org/installer \
        | php -- --install-dir=/usr/local/bin --filename=composer \
    # 国内镜像加速
    && composer config -g repo.packagist composer https://packagist.phpcomposer.com \
    && composer global require hirak/prestissimo


# 开启 URL 重写模块
# 配置默认放置 App 的目录
RUN a2enmod rewrite \
    && mkdir -p /app \
    && rm -fr /var/www/html \
    && ln -s /app/public /var/www/html

WORKDIR /app

# 预先加载 Composer 包依赖,优化 Docker 构建镜像的速度
COPY ./composer.json /app/
COPY ./composer.lock /app/
RUN composer install  --no-autoloader --no-scripts

# 到 App 目录
COPY . /app

# 执行 Composer 自动加载和相关脚本
# 修改目录权限
RUN composer install \
    && chown -R www-data:www-data /app \
    && chmod -R 0777 /app/storage

Если, согласно написанию предыдущей статьи, изменить .env, чтобы указать базу данных на контейнер MySQL, написанный в предыдущей статье, затем сгенерировать образ и, наконец, создать контейнер и запустить его, но это не является целью этой статьи. , Цель этой статьи — использовать «docker composer» для объединения нескольких зеркал для настройки среды Laravel.

Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker. С помощью Compose вы используете файл Compose для настройки служб вашего приложения. Затем с помощью одной команды вы создаете и запускаете все службы из своей конфигурации.

Итак, следующий шаг — написать документ «docker-compose.yml».

документ "docker-compose.yml"

Посмотрите прямо на код, легко понять

version: '3'

services:
  app:
    build: .
    restart: always
    depends_on:
      - mysql
    ports:
       - "8000:80"
    networks:
      - app

  mysql:
    image: daocloud.io/mysql:latest
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: homestead
      MYSQL_USER: homestead
      MYSQL_PASSWORD: secret
    ports:
      - 8002:3306
    networks:
      - app
networks:
  app:
volumes:
  db_data:

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

docker-compose up -d

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

Введите в браузере:http://localhost:8000, запустите следующим образом:

Суммировать

Вам осталось проверить небольшой хвост: контейнер MySQL создан, но как он интегрируется с проектом Laravel?

Примечание. После передачи командыlaravel newКогда я создавал проект блога, я скачал пакет зависимостей композитора.Поскольку локальная среда у всех несовместима со средой докера, я удалил всю папку поставщика, что понятно, потому что, когда мы сотрудничаем с другими, в репозитории также будет нет зависимостей от поставщика в папке пакета.

правила написания документа "docker-compose.yml"Пожалуйста, послушайте следующую разбивку

P.S. Использование зеркала MySQL

Запустить экземпляр MySQL очень просто:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=000000 -e MYSQL_DATABASE=yemeishu_database daocloud.io/mysql:latest

WX20170911-213430@2x
WX20170911-213430@2x

Давайте войдем в контейнер, чтобы увидеть, была ли создана база данных: yemeishu_database и установлен ли пароль root: 000000.

WX20170911-213820@2x
WX20170911-213820@2x

Если вы используете клиент базы данных, вы также можете увидеть созданную базу данных: yemeishu_database

WX20170911-213933@2x
WX20170911-213933@2x


coding01 с нетерпением ждет вашего внимания

qrcode
qrcode


спасибо, что увидели это

qrcode
qrcode