>백엔드 개발 >PHP 튜토리얼 >Laravel용 Docker 개발 환경을 직접 구축하는 방법

Laravel용 Docker 개발 환경을 직접 구축하는 방법

不言
不言원래의
2018-07-23 10:13:362641검색

이 글에서 공유한 내용은 Laravel용 Docker 개발 환경 구축에 관한 내용으로, 도움이 필요한 친구들이 참고할 수 있습니다.

오랫동안 글을 쓰지 않았습니다. 오늘은 Laravel이 실행할 Docker 환경을 구축하는 방법에 대해 이야기하겠습니다.

시중에서 가장 유명한 것은 "laradock" https://github.com/laradock/laradock

Docker PHP 개발 환경입니다.
사용 참고: http://laradock.io

" self-build" ”, 그러면 이를 참조하여 Laravel 작업의 필요성을 최소화할 수 있습니다.

다음은 내가 나열한 기본 조건입니다.

  1. 소프트웨어: PHP 7.2, Nginx, MySQL, Composer, NPM 또는 Yarn 등

  2. 국내 미러를 사용하세요.

  3. PHP 버전을 언제든지 전환하거나 Apache와 Nginx 간 전환 등 확장 및 사용이 쉽습니다.

Docker-Compose

확장성을 달성하려면 "laradock"과 마찬가지로 Docker-Compose 오케스트레이션 방법을 사용하여 여러 핵심 이미지를 함께 조립하세요.

php-fpm

여기에서는 "DaoCloud" 가속 이미지(7.2-fpm-alpine)를 사용하고 있습니다. 7.2-fpm-alpine

该版本既用 PHP 7.2 版本,而且 alpine 最小化系统,可以基于此,安装环境需要的额外工具:如,composernodejspythonyarn 等。

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 具体使用,可以参考:https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7

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

剩下就是连接这些 images。最后看看 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 社区联合 又拍云 与 优帆远扬 共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务。

值得推荐使用

参考:http://laravel-china.org/topics/4484/composer-mirror-use-help

使用 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

이 버전은 PHP 7.2 버전과 alpine 최소화 시스템을 모두 사용합니다. 이를 기반으로 composer 등 환경에 필요한 추가 도구를 설치할 수 있습니다. , nodejs, python, yarn

rrreee

alpine 시스템 플러그인이 설치된 곳에서는 mirrors.aliyun.com Alibaba Cloud 미러를 사용합니다.

php:7.2-fpm-alpine 구체적인 사용법은 다음을 참조하세요: https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7

nginx


우리는 nginx를 주로 사용하여 웹사이트 구성 파일을 nginx로 로드합니다.

rrreee

남은 것은 이미지를 연결하는 것뿐입니다. 마지막으로 docker-compose.yml 파일 콘텐츠를 살펴보세요. rrreee다시 테스트하세요

Create Laravel 프로젝트

rrreee

참고: 테스트를 수행하려면, vendor 폴더를 사용하면 composer.lock 파일이 삭제됩니다. rrreee🎜Modify docker-compose.yml🎜🎜 docker-compose.yml 파일의 경로는 프로젝트를 실행합니다: 🎜rrreee🎜build🎜🎜 laraveldocker에서 빌드 명령을 실행합니다: 🎜rrreee🎜🎜🎜🎜전체 속도가 꽤 빠릅니다🎜🎜🎜🎜🎜다음으로 컨테이너에 들어가🎜rrreee🎜플러그인 설치 효과를 살펴보겠습니다:🎜🎜🎜🎜🎜는 https://packagist.laravel-china.org를 사용하고 있습니다. > 국내거울 . 🎜🎜참고: 이 미러는 Laravel China 커뮤니티인 Youpaiyun과 Youfanyuanyang이 공동으로 시작한 공공 복지 프로젝트로, 대다수의 PHP 사용자에게 안정적이고 빠른 Composer 국내 미러링 서비스를 제공하는 것을 목표로 합니다. 🎜사용을 권장합니다🎜🎜참조: http://laravel-china.org/topics/4484/composer-mirror-use-help🎜🎜🎜yarn 또는 cnpm을 사용하세요. code> 플러그인 설치: 🎜🎜<img src="https://segmentfault.com/img/remote/1460000015722906" alt="" title="">🎜🎜🎜<code>Laravel 키 비밀번호 생성: 🎜 rrreee🎜실행하고 효과를 확인하세요. 🎜🎜다음에는 데이터베이스 연결을 살펴보겠습니다. .env를 수정합니다. 🎜rrreee🎜우리는 php artisan make:auth를 사용하여 모든 인증 인터페이스에 대한 레이아웃, 등록 및 로그인 보기와 경로를 생성합니다. 동시에 애플리케이션의 로그인 요청을 처리하기 위해 HomeController도 생성합니다. 데이터를 로드하려면 php artisan migration을 사용하세요. 🎜🎜🎜🎜🎜데이터 시트를 살펴보겠습니다. 🎜🎜🎜🎜🎜이 시점에서는 MySQL 데이터베이스에 연결되었음을 의미합니다. 🎜🎜요약🎜🎜학습 과정에서는 남이 만든 Dockerfile을 직접 사용해도 되지만, 자급자족할 수 있으면 가장 좋을 것 같습니다. 🎜🎜자신만의 Docker 개발 환경을 구축하여 자세히 알아볼 수도 있습니다. 앞으로도 개발 요구에 맞춰 지속적으로 개선하고 최소화하겠습니다. 🎜🎜관련 권장 사항: 🎜🎜🎜🎜 TP5의 URL 액세스 모드 분석 🎜🎜🎜🎜🎜🎜🎜Nginx 구성을 위한 세부 코드🎜🎜🎜

위 내용은 Laravel용 Docker 개발 환경을 직접 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.