请问下有人使用Docker来安装Laravel本地开发环境吗
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-04-26 09:01:45
0
3
871

有人使用docker来安装laravel本地环境吗,应该怎么做,安装好后怎么开发,就是一整套流程应该是什么样的?

曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua(3)
滿天的星座

Terima kasih atas jemputan. Biar saya beritahu anda tentang rancangan saya.

Pertama sekali, anda perlu menjelaskan dengan jelas bahawa satu bekas dan satu proses boleh diselesaikan melalui kerjasama antara berbilang bekas.

Jadi, empat bekas berikut diperlukan:

  1. nginx

    • Fungsi: Menjawab permintaan web dan memproses fail statik.

    • Cermin: Tidak perlu membinanya sendiri, cuma tarik imej rasmi terus.

  2. php-fpm

    • Fungsi: Memproses skrip PHP.

    • Cermin: Memandangkan projek mungkin bergantung pada sambungan yang berbeza, anda perlu bergantung pada imej rasmi untuk membinanya sendiri Selain itu, sokongan komposer diperlukan.

  3. mysql

    • Fungsi: pangkalan data.

    • Cermin: Tidak perlu membinanya sendiri, cuma tarik imej rasmi terus.

  4. redis

    • Fungsi: pangkalan data cache.

    • Cermin: Tidak perlu membinanya sendiri, cuma tarik imej rasmi terus.

Mari kita bercakap tentang pembinaan imej php-fpm Anda perlu memberi perhatian kepada perkara berikut:

  • Hanya bergantung pada imej rasmi php:7.0.12-fpm Tidak perlu membinanya dari awal Anda boleh memilih versi sendiri.

  • Jika ia tidak digunakan sebagai mainan, sebaiknya jangan gunakan siri alpine cermin, walaupun ia kecil dan indah.

Contoh fail docker yang mudah:

FROM php:7.0.12-fpm
MAINTAINER Tairy <tairyguo@gmail.com>

WORKDIR /working
RUN apt-get update --fix-missing && apt-get install -y \
    g++ autoconf bash git apt-utils libxml2-dev libcurl3-dev pkg-config \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && docker-php-ext-install iconv curl mbstring \
        xml json mcrypt mysqli pdo pdo_mysql zip \
    && docker-php-ext-configure gd \
        --with-gd \
        --with-freetype-dir=/usr/include/ \
        --with-png-dir=/usr/include/ \
        --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd \
    && docker-php-ext-enable gd \
    && pecl install /pecl/redis-3.0.0.tgz \
    && docker-php-ext-enable redis \
    && apt-get purge -y --auto-remove \
    && rm -rf /var/cache/apt/* \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /pecl
    
# 安装 composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer \
    && composer self-update \
    && composer config -g repo.packagist composer https://packagist.phpcomposer.com \
    && composer global require "laravel/installer=~1.1" \
    && composer global require predis/predis \
    && wget https://phar.phpunit.de/phpunit.phar \
    && chmod +x phpunit.phar \
    && mv phpunit.phar /usr/local/bin/phpunit

Sudah tentu, anda mungkin menghadapi masalah GFW semasa proses pembinaan Anda boleh merujuk artikel saya untuk membuat beberapa pelarasan: Amalan Docker (7): Meningkatkan Kebahagiaan

Selepas membina imej, pengurusan berbilang bekas memerlukan penggunaan alat orkestrasi docker-compose, jadi anda juga perlu menulis fail docker-compose.yml Contoh mudah (jangan lupa baca ulasan):

version: '2'
services:
  nginx:
    image: nginx:alpine
    depends_on:
      - red
    ports:
      - 8080:80
    volumes:
      - /path/to/nginx.conf:/etc/nginx/nginx.conf
      - /path/to/default.conf:/etc/nginx/conf.d/default.conf
      # 这个挂载是为了处理静态文件
      - /path/to/static:/working
    networks:
      - app
  app:
    image: your-php-fpm-image
    depends_on:
      - mysql
      - redis
    volumes:
      - .:/working
      - /path/to/php.ini:/usr/local/etc/php/php.ini
    networks:
      - app
  mysql:
    image: mysql:latest
    environment:
      TZ: 'Asia/Shanghai'
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 8002:3306
    networks:
      - app
  redis:
    image: redis:latest
    ports:
      - 8003:6379
    networks:
      - app
networks:
  app:

Beberapa perkara yang perlu diberi perhatian:

  • Pastikan anda mentakrifkan rangkaian.

  • nginx.conf, default.conf, php.ini paling baik ditakrifkan oleh anda sendiri dan dipasang ke dalam bekas.

  • Jangan lupa tetapkan zon waktu anda.

Dengan cara ini, fail default.conf dalam nginx boleh ditulis seperti ini:

server {
  listen 80 default_server;
  server_name  default;

  location /static/ {
    root /working;
    index index.html;
  }

  index index.html index.php;
  root /working/public;
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location /packages {
    try_files $uri $uri/;
  }

  location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # 注意下面这行,pass 到 php-fpm 容器的服务名即可。
    fastcgi_pass app:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

  sendfile off;
}

Pada ketika ini, kerja konfigurasi selesai Pada masa hadapan, anda hanya perlu cd ke direktori projek anda untuk melaksanakan

docker-compose up -d

Sudah tiba masanya untuk membangun, bukankah ia sangat mudah?

滿天的星座

Baiklah, izinkan saya mengesyorkan yang ini
Laradock
Selain itu, jika anda mengalami kesukaran membaca bahasa Inggeris, anda boleh membaca artikel dekan...
Akademi Laravel
Sudah tentu, terdapat Di sana adalah banyak perkara yang boleh dirujuk. Saya rasa lebih baik bertanya kepada Google

phpcn_u1582

Syorkan laradock pada Github, jangan lupa untuk mengkonfigurasi pecutan domestik, jika tidak muat turun akan menjadi sangat perlahan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan