Comment créer vous-même un environnement de développement Docker pour Laravel

不言
Libérer: 2023-04-03 10:36:01
original
2613 Les gens l'ont consulté

Le contenu de cet article concerne la mise en place d'un environnement de développement Docker pour Laravel. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Je n'ai rien écrit depuis longtemps. Aujourd'hui, je vais parler de la façon de créer un environnement Docker pour que Laravel puisse s'exécuter.

Le plus connu du marché est "laradock" https://github.com/laradock/laradock

Environnement de développement Docker PHP
Référence d'utilisation : http : / /laradock.io

Comme il est "auto-construit", nous pouvons nous y référer pour minimiser les besoins de fonctionnement de Laravel.

Voici les exigences de base que j'ai énumérées :

  1. Logiciel : PHP 7.2, Nginx, MySQL, Composer, NPM ou Yarn, etc. ; >

  2. Utilisez un miroir domestique ;
  3. Docker-Compose
  4. Pour atteindre l'évolutivité, tout comme "laradock", utilisez la méthode d'orchestration Docker-Compose pour assembler plusieurs images principales ensemble.

  5. php-fpm

Ici, nous utilisons l'image accélérée "DaoCloud" -

.

Cette version utilise à la fois la version

et le système réduit

Sur cette base, vous pouvez installer des outils supplémentaires nécessaires à l'environnement : tels que

, 7.2-fpm-alpine, ,

Attendez.

PHP 7.2alpineDans lequel le plug-in système composer est installé, nous utilisons l'image nodejs Alibaba Cloud. pythonyarn

Pour une utilisation spécifique, veuillez vous référer à : https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7
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
Copier après la connexion

nginxalpinemirrors.aliyun.comus Utiliser

charge principalement le fichier de configuration du site Web dans

. php:7.2-fpm-alpine

Il ne reste plus qu'à relier ces images. Enfin, jetez un œil au

contenu du fichier :

nginxnginxTestez-le à nouveau

FROM daocloud.io/nginx:1.13-alpine

MAINTAINER coding01 <yemeishu@126.com>

ADD vhost.conf /etc/nginx/conf.d/default.conf

WORKDIR /var/www
Copier après la connexion
Créez un projet Laravel

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:
Copier après la connexion
Remarque :

Pour les tests, le dossier

et les fichiers

peuvent être supprimés.

composer create-project laravel/laravel demo
Copier après la connexion
git clone

Dans le même dossier du projet , vendor notre "laraveldocker" auto-construit : composer.lock

Modifier docker-compose. yml

Exécutez notre projet avec le chemin du fichier demo : git clone

git clone https://github.com/fanly/laraveldocker.git
Copier après la connexion
build

Exécutez la commande build sous

: docker-compose.yml

app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ../:/var/www
Copier après la connexion

laraveldockerLa vitesse totale est assez rapide

docker-compose up
Copier après la connexion


Entrez ensuite dans le conteneur

Jetons un coup d'œil à l'effet de l'installation du plug-in :

docker exec -it de075c525528 bash
Copier après la connexion
utilise le

miroir domestique.

Remarque : Ce miroir est un projet de bien-être public lancé conjointement par la communauté Laravel Chine, Youpaiyun et Youfanyuanyang, visant à fournir des services de mise en miroir nationaux Composer stables et à haut débit pour la majorité des utilisateurs de PHP. Il est recommandé d'utiliser

Référence : http://laravel-china.org/topics/4484/composer-mirror-use-help

https://packagist.laravel-china.org

Utiliser
ou

Installez le plug-in :

yarnGénérez cnpm :

Exécutez-le et voyez l'effet :

Regardons ensuite la connexion à la base de données, modifions Laravel key secret :

cp .env.example .env
php artisan key:generate

Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.
Copier après la connexion

Nous utilisons pour générer des vues de mise en page, d'enregistrement et de connexion, ainsi que des itinéraires pour toutes les interfaces d'authentification. . Dans le même temps, il générera également

pour gérer la demande de connexion de l'application. Utilisez

pour charger des données. .env

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Copier après la connexion

php artisan make:authHomeControllerJetons un coup d'œil à la fiche technique : php artisan migrate


À ce stade, il signifie que nous sommes connectés à

La base de données est OK.

Résumé
Dans le processus d'apprentissage, il est préférable d'utiliser le Dockerfile créé par d'autres Bien qu'il puisse être utilisé directement, il. ce serait mieux s'il pouvait être autosuffisant.

Vous pouvez également en apprendre davantage en créant votre propre environnement de développement Docker. À l'avenir, nous continuerons à l'améliorer et à le minimiser pour répondre aux besoins de développement. MySQL

Recommandations associées :

Analyse des modèles d'accès aux URL dans TP5


Nginx Code détaillé de configuration

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal