Maison  >  Article  >  développement back-end  >  Docker crée un exemple d'environnement de développement Laravel

Docker crée un exemple d'environnement de développement Laravel

小云云
小云云original
2018-02-09 15:15:353347parcourir

Cet article utilise principalement laradock pour la configuration du docker local. laradockL'environnement dont Laravel a besoin a été intégré. Il vous suffit de modifier la configuration pour créer un environnement de développement. C'est vraiment une bonne solution pour le développement et la gestion.

Pour expliquer brièvement, dans l'environnement docker nous devons exécuter le projet laravel, qui va en fait créer plusieurs conteneurs : Lorsque l'ordinateur est encore un système de fenêtres, il est souvent nécessaire de construire un conteneur basé sur le service vm. Ce n'est qu'en mettant en place un environnement que nous pouvons mieux développer (il devrait être plus proche de l'environnement en ligne), et maintenant sous l'aura mystérieuse de docker, il est possible de construire un environnement de développement local avec un minimum de ressources

, et en même temps, il peut être mieux développé Migrer ailleurs.

  • espace de travail (environnement de développement)

  • php-fpm (support php)

  • nginx (service web)

  • mysql (base de données)

Ce sont des conteneurs générés sur la base du retraitement de laradock. répertoire avec le nom correspondant sous le répertoire laradock, qui contient Dockerfile et les configurations associées. Les étudiants intéressés peuvent lire et apprendre autant que vous le souhaitez :)

Pour un contenu plus approfondi, il est recommandé. pour passer à la documentation officielle de Laradock.

Préparez

Installez-le d'abord sous le système de fenêtresdocker

Docker crée un exemple d'environnement de développement Laravel

Attendez plusieurs redémarrages avant d'exécuter dockerTestez la commande.

Docker crée un exemple d'environnement de développement Laravel

Utilisez ensuite git pour extraire le package https://github.com/laradock/laradock.git dans le répertoire plat de votre projet.

# 平级目录

D:/www/
 - /laradock
 - /my-project

Vous êtes maintenant prêt à passer à l'étape suivante.

Configuration

L'environnement configuré ici est configuré en fonction de l'environnement commun

  • nginx

  • php -fpm 5.6

  • mysql 5.6

Ensuite vous devez modifier le laradock/.env fichier

/www/laradock
 - .env

et vous le trouvera lorsque vous entrerez dans le répertoire laradock Le fichier .env n'existe pas Nous devons copier une copie de env-example pour le modifier.

# /www/laradock

$ cp env-example .env

Modifier la version PHP

Entrez le fichier .env et recherchez PHP_VERSION Modifiez la version PHP à 56 (par défaut 71, facultatif 71, 70, 56).

# /www/laradock/.env
### PHP Version

PHP_VERSION=56

Modifier la version et la configuration de Mysql

Entrez le fichier .env et recherchez MYSQL Modifiez la version de MySQL à 56 (8 par défaut, 8, 5, 5.6, 5.5 en option) .

D'autres paramètres sont renseignés en fonction des besoins personnels. Généralement, MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD doivent être modifiés pour assurer le lien.

# /www/laradock/.env
### MYSQL

MYSQL_VERSION=5.6

# MYSQL_DATABASE 可选,填写后会默认创建同名数据库
MYSQL_DATABASE=default

# MYSQL_USER 用户,填写后会创建用户,默认为 default
MYSQL_USER=packy

# MYSQL_PASSWORD 密码,填写后作为新建用户的密码,默认为 secret
MYSQL_PASSWORD=123456-

# MYSQL_PORT 访问端口,默认是3306,建议不要修改
MYSQL_PORT=3306

# MYSQL_ROOT_PASSWORD root用户密码,建议使用严谨的密码,默认为 root
MYSQL_ROOT_PASSWORD=23333-
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

À propos de la sélection de la version de Mysql

mysql utilise l'image officielle, nous pouvons donc utiliser hub.docker.com pour interroger mysqlquelles versions contient l'image officielle. Le choix spécifique dépend de vos besoins individuels.

Docker crée un exemple d'environnement de développement Laravel

Modifier la configuration de nginx

Généralement, il n'est pas nécessaire de modifier quoi que ce soit, utilisez simplement celle par défaut. Concernant la configuration du site internet, vous devez saisir laradock/nginx/sites.

Si vous devez modifier le port, vous pouvez saisir le fichier .env et trouver NGINX pour le modifier.
# /www/laradock/.env
### NGINX

NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=443

# NGINX_HOST_LOG_PATH log存放位置,默认位置在laradock/logs/nginx/
NGINX_HOST_LOG_PATH=./logs/nginx/

# NGINX_SITES_PATH 网站配置, 默认位置在laradock/nginx/sites/
NGINX_SITES_PATH=./nginx/sites/

NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
NGINX_PHP_UPSTREAM_PORT=9000

À propos de la configuration de Nginx

nginx les fichiers de configuration sont stockés sous laradock/nginx/sites Si vous devez créer un nouveau site Web, vous pouvez copier le .example correspondant et le renommer. pour .conf Apporter des modifications. Remarque : seuls les fichiers avec .conf seront chargés sous nginx.

Ici, je copie laravel.conf.example à titre d'exemple et je le renomme en my-project.conf :

# laradock/nginx/sites/my-project.conf
server {

    listen 80;
    listen [::]:80;

    # 域名,改为你的域名
    server_name my-project.com;
    # 项目目录,均以 /var/www/ 开头。这个约定后续会说明
    root /var/www/my-project;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

En même temps, modifiez la machine hôte (c'est-à-dire la machine locale de la fenêtre) hosts

# C:\Windows\System32\drivers\etc\hosts

127.0.0.1   my-project.com

Essayez de courir

À ce stade, le travail de préparation est presque terminé.

Exécutez la commande suivante pour l'installer et l'utiliser. Veuillez patienter car le temps d'extraction à partir de sources étrangères est lent.

docker-compose up -d nginx mysql

Docker crée un exemple d'environnement de développement Laravel

Une fois terminé, entrez docker ps pour voir l'état d'exécution du conteneur. Tout va bien ! ! !

Docker crée un exemple d'environnement de développement Laravel

Essayez de visiter http://my-project.com pour voir l'effet. Actuellement, les fichiers php sont accessibles normalement.

Docker crée un exemple d'environnement de développement Laravel

Exécuter laravel

Je ne peux pas mentionner ici le conteneur workspace, qui sert d'espace de travail pour fournir divers outils (dont : PHP CLI, Composer, Git, Linuxbrew, Node, V8JS, Gulp, SQLite, xDebug, Envoy, Deployer, Vim, Yarn, etc.).

Comment utiliser ces fonctions ?

首先进入workspace容器

# /www/laradock
docker-compose exec workspace bash

composer换国内源

进到容器后默认就是项目目录/var/www,由于composer用的是国外源比较慢,这里需要切换成国内源。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

安装laravel

这里我们需要在my-project目录安装laravel。

*注:需要提前把my-project里的所有内容清空
composer create-project laravel/laravel my-project2 "5.2.*" && \
cd my-project && \
php artisan key:generate

配置并重启nginx

安装完成后,把laradock/nginx/sites/my-project.conf文件下的网站目录地址稍微改一下

server {

    listen 80;
    listen [::]:80;

    server_name my-project.com;
    # 加上public目录
    root /var/www/my-project/public;
    index index.php index.html index.htm;

    ...
}

重启nginx容器

# /www/laradock
docker-compose restart nginx

Docker crée un exemple d'environnement de développement Laravel

关于数据库服务

# .env
DB_CONNECTION=mysql

# mysql的容器网络已经解析至"mysql"域,所以这里配置"mysql"域便能访问
DB_HOST=mysql

# 默认3306,一般不需要改动,如要改动端口应该与laradock/.env中的MYSQL_PORT一致
DB_PORT=3306

# 数据库
DB_DATABASE=default

# 用户
DB_USERNAME=packy

# 密码
DB_PASSWORD=123456-

一些问题:

Q:运行失败,提示ERROR: for laradock_mysql_1  Cannot create container for service mysql: Drive sharing seems blocked by a firewall

A:先暂停你本机杀毒程序的防御进程。


Q:运行失败,提示ERROR: for laradock_nginx_1  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1 (6e4f4761d30f4cd80c44c6b0fddfbd4ef0324529099aace02bee6a6653ce453a): Error starting userland proxy: Bind for 0.0.0.0:443 failed: port is already allocated

A:建议你切换端口,我已尝试改为1443能正常运行,目前只能以这种方式处理。


# .env
### NGINX

NGINX_HOST_HTTPS_PORT=1443

Q:为何网站目录必须以/var/www开头?

A:网站访问进入的是nginx容器,/var/www目录就是容器内网站目录存放的位置。由于配置在创建容器时,会将本地目录挂载至/var/www目录,所以就能访问到本地的代码。这块设置在laradock/.env中找到APPLICATION可自行设置。

相关推荐:

Docker的Mysql主从复制详解

零起步构建一个基于Docker的Laravel应用

使用docker基于daocloud自动化部署到自己的主机

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn