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

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

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

répondre à tous(3)
滿天的星座

Merci pour l'invitation. Laissez-moi vous parler de mon projet, j'espère que cela pourra apporter un peu d'aide sur le sujet.

Tout d'abord, vous devez indiquer clairement qu'un conteneur et un processus peuvent être réalisés grâce à la collaboration entre plusieurs conteneurs.

Ainsi, les quatre conteneurs suivants sont nécessaires :

  1. nginx

    • Fonction : Répondre aux requêtes Web et traiter les fichiers statiques.

    • Miroir : Pas besoin de le construire vous-même, il suffit de tirer directement l'image officielle.

  2. php-fpm

    • Fonction : Traiter les scripts PHP.

    • Mirror : Étant donné que le projet peut s'appuyer sur différentes extensions, vous devez vous appuyer sur l'image officielle pour le construire vous-même. De plus, le support du compositeur est requis.

  3. mysql

    • Fonction : base de données.

    • Miroir : Pas besoin de le construire vous-même, il suffit de tirer directement l'image officielle.

  4. redis

    • Fonction : cache base de données.

    • Miroir : Pas besoin de le construire vous-même, il suffit de tirer directement l'image officielle.

Parlons de la construction de l'image php-fpm. Vous devez faire attention aux points suivants :

  • Fiez-vous simplement à l'image officielle php:7.0.12-fpm. Il n'est pas nécessaire de la construire à partir de zéro. Vous pouvez choisir la version par vous-même. Les bugs dans la dernière version ne sont pas exclus.

  • S'il n'est pas utilisé comme jouet, il est préférable de ne pas utiliser la série alpine de miroirs, bien qu'elle soit petite et exquise.

Un exemple simple de fichier docker :

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

Bien sûr, vous pouvez rencontrer des problèmes GFW pendant le processus de construction. Vous pouvez vous référer à mon article pour faire quelques ajustements : Docker Practice (7) : Améliorer le bonheur

Après avoir construit l'image, la gestion multi-conteneurs nécessite l'utilisation d'outils d'orchestration docker-compose, il faut donc également écrire un fichier docker-compose.yml Un exemple simple (n'oubliez pas de lire les commentaires) :

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:
Quelques points à noter :

  • Assurez-vous de définir le réseau.

  • nginx.conf, default.conf, php.ini sont mieux définis par vous-même et montés dans le conteneur.

  • N'oubliez pas de définir votre fuseau horaire.

De cette façon, le fichier default.conf dans nginx peut être écrit comme ceci :

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;
}
À ce stade, le travail de configuration est terminé. À l'avenir, il vous suffira de vous connecter au répertoire de votre projet pour exécuter

.

docker-compose up -d
Il est temps de développer, n'est-ce pas très simple ?

滿天的星座

D'accord, laissez-moi vous recommander celui-ci
Laradock
De plus, si vous avez des difficultés à lire l'anglais, vous pouvez lire l'article du doyen...
Laravel Academy
Bien sûr, il y en a y a plein de choses qui peuvent être référencées je pense qu'il vaudrait mieux demander à foutu Google

.
phpcn_u1582

Recommandez Laradock sur Github, n'oubliez pas de configurer une accélération domestique, sinon le téléchargement sera très lent

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal