Давно ничего не писал, сегодня расскажу о том, как собрать Docker окружение, работающее на Laravel.
Наиболее известным на рынке является «ларадок».GitHub.com/Лара док/ла…
Среда разработки Docker PHP. Используйте ссылку:laradock.io
Поскольку он «самостоятельный», мы можем ссылаться на него, чтобы свести к минимуму необходимость запуска Laravel.
Вот основные условия, которые я перечислил:
- Программное обеспечение: PHP 7.2, Nginx, MySQL, Composer, NPM или Yarn и т. д.;
- Используйте бытовые зеркала, используйте бытовые зеркала, используйте бытовые зеркала, используйте бытовые зеркала.
- Его легко расширять и использовать, например, переключение версий 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
:
Наконец, вы также можете прочитать предыдущую статью об использовании «Ларадока»: