Со вторым"Используйте 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
Скачай с божьей помощью! ! !
Создайте проект 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
Давайте войдем в контейнер, чтобы увидеть, была ли создана база данных: yemeishu_database и установлен ли пароль root: 000000.
Если вы используете клиент базы данных, вы также можете увидеть созданную базу данных: yemeishu_database
coding01 с нетерпением ждет вашего внимания
спасибо, что увидели это