Maison > Questions et réponses > le corps du texte
有人使用docker来安装laravel本地环境吗,应该怎么做,安装好后怎么开发,就是一整套流程应该是什么样的?
滿天的星座2017-04-26 09:03:45
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 :
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.
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.
mysql
Fonction : base de données.
Miroir : Pas besoin de le construire vous-même, il suffit de tirer directement l'image officielle.
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 :
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 ? 滿天的星座2017-04-26 09:03:45
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_u15822017-04-26 09:03:45
Recommandez Laradock sur Github, n'oubliez pas de configurer une accélération domestique, sinon le téléchargement sera très lent