自己搭建一個 Laravel 的 Docker的開發環境的方法

不言
發布: 2023-04-03 10:36:01
原創
2615 人瀏覽過

這篇文章要跟大家分享的內容是關於自己搭建一個 Laravel 的 Docker的開發環境,有一定的參考價值,有需要的朋友可以參考一下。

好久沒寫東西,今天說一說怎麼自建一個 Laravel 運作的 Docker 環境。

市面上最有名的莫過於「laradock」https://github.com/laradock/laradock

Docker PHP development environment.
使用參考:http:/ /laradock.io

既然是「自建」,那我們可以參考這個,最小化滿足Laravel 運行的需要。

以下是我羅列出的基本條件:

  1. 軟體:PHP 7.2、Nginx、MySQL、Composer、NPM or Yarn 等等;

  2. 使用國內鏡像;使用國內鏡像;使用國內鏡像;

  3. 易於擴展使用,例如隨時可以切換PHP 版本,或Apache 和Nginx 切換使用。

Docker-Compose

要達到可擴充行,和「laradock」一樣,使用Docker-Compose 編排的方式,將核心的幾個image 組裝在一起。

php-fpm

這裡我們使用的是「DaoCloud」加速鏡像 —— 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」:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">git clone https://github.com/fanly/laraveldocker.git</pre><div class="contentsignin">登入後複製</div></div>修改docker-compose.ymldocker-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### 資料庫OK.######總結######在學習過程中,使用別人做好的Dockerfile,雖可以直接拿來使用,但如果能自給自足,那最好不過了。 ######透過自建 docker 開發環境流程中,也能讓自己學到更多。接下來還會不斷完善,最小化滿足開發需求。 ######相關推薦:############TP5中URL存取模式的解析#####################Nginx配置的詳細程式碼#########

以上是自己搭建一個 Laravel 的 Docker的開發環境的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板