Créer un environnement Laravel / Docker avec VSCode devcontainer

Aperçu

Cet article explique comment créer un environnement Laravel à l'aide du conteneur de développement de VS Code. Vous pouvez créer un environnement à grande vitesse tant que vous disposez des outils à utiliser, et puisque vous utilisez Docker, vous pouvez l'utiliser comme environnement de développement unifié pour votre équipe. Si vous souhaitez le déplacer pour le moment, veuillez utiliser le lien du référentiel.

Dépôt

https://github.com/naoyayamamoto/laravel-docker-sample Comme il est préparé en tant que référentiel de modèles, il peut également être utilisé comme modèle.

Les outils utilisés

Utilisez les outils ci-dessus. Les détails d'installation sont omis pour Docker et Visual Studio Code. Visual Studio Code Remote --Containers est un plug-in VS Code créé par Microsoft. Vous pouvez l'installer dans VS Code à partir du lien.

comment utiliser

Ouvrez le référentiel avec VS Code

$ git clone https://github.com/naoyayamamoto/laravel-docker-sample
$ code laravel-docker-sample
#Si vous n'avez pas la commande code, ouvrez le référentiel avec VS Code

Ouvrez VS Code à l'aide de devcontaner

  1. Si VS Code contient «Visual Studio Code Remote --Containers», une icône a été ajoutée en bas à gauche, donc appuyez dessus pour ouvrir la boîte de dialogue ou sur Afficher toutes les commandes «cmd + shift + P» pour ouvrir la boîte de dialogue.
  2. Exécutez Remote-Containers: Reopen in Container pour commencer à préparer l'environnement.
  3. La préparation de Docker pour la première fois prend du temps, mais il démarre à grande vitesse après la deuxième fois.

Confirmation d'accès

Allez sur http: // localhost: 8000 et vous devriez voir la page initiale de Laravel.

laravel-8-top.jpg

Commentaire

Lorsque vous ouvrez devcontainer, l'environnement Docker sera construit sur la base de .devcontainer / docker-compose.yml. Nous utilisons les conteneurs suivants et nous vous expliquerons chacun d'eux.

nginx:alpine (web)

mysql:8 (db)

PHP personnalisé pour VSCode: 7-fpm (application)

prime

Dockerfile pour l'environnement de production

Un Dockerfile qui construit pour la production a été ajouté au référentiel, veuillez donc l'utiliser comme source de personnalisation. Nous utilisons une construction en plusieurs étapes pour compiler js et installer composer à l'avance pour garder l'image finale aussi petite que possible. Je réussis uniquement les tests de construction avec les actions Github.

Lors de l'utilisation avec kubernetes

Pour référence, il s'agit d'un paramètre lors de l'utilisation avec kubernetes. On suppose que nginx et php sont exécutés en tant que 1POD.

Référence deployment.yml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-conf
data:
  default.conf: |
    access_log /dev/stdout main;
    error_log /dev/stderr warn;
    server {
        server_tokens off;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        gzip on;
        gzip_http_version 1.0;
        gzip_disable "msie6";
        gzip_proxied any;
        gzip_min_length 1024;
        gzip_comp_level 6;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
        open_file_cache max=100000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;

        listen 80;
        root /workspace/public;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Content-Type-Options "nosniff";

        index index.html index.htm index.php;

        charset utf-8;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }

        error_page 404 /index.php;

        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.(?!well-known).* {
            deny all;
        }
    }
---
kind: Service
apiVersion: v1
metadata:
  name: laravel-service
spec:
  selector:
    app: laravel
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      name: laravel-http
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: laravel
  labels:
    app: laravel
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: laravel
  template:
    metadata:
      labels:
        app: laravel
    spec:
      containers:
        - name: app
          image: myimage
          volumeMounts:
            - mountPath: /var/run/php-fpm
              name: php-fpm-socket
            - mountPath: /shared
              name: public-contents
          lifecycle:
            postStart:
              exec:
                command: ["/bin/sh", "-c", "cp -aT /workspace/public /shared"]
        - name: web
          image: nginx:alpine
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /var/run/php-fpm
              name: php-fpm-socket
            - mountPath: /etc/nginx/conf.d
              name: nginx-conf
            - mountPath: /workspace/public
              name: public-contents
      volumes:
        - name: php-fpm-socket
          emptyDir: {}
        - name: public-contents
          emptyDir: {}
        - name: nginx-conf
          configMap:
            name: nginx-conf
            items:
              - key: default.conf
                path: default.conf

Recommended Posts

Créer un environnement Laravel / Docker avec VSCode devcontainer
Créer un environnement Node.js avec Docker
Créez un environnement Docker + Laravel avec Laradock
Créer un environnement de développement Wordpress avec Docker
Créez rapidement un environnement de développement WordPress avec Docker
Créer un environnement de développement pour Docker, Java, vs code
Créer un environnement Docker avec WSL
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
[Note] Créez un environnement Python3 avec Docker dans EC2
Créez un environnement Vue3 avec Docker!
Créer un environnement local Couchbase avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Créer un environnement d'exécution WAS à partir de Docker
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
[Docker] Construisez l'environnement d'exécution de Jupyter Lab avec Docker
Créer un environnement avec Docker sur AWS
Créer un environnement de vérification des opérations TensorFlow avec Docker
Comment créer un environnement Rails 6 avec Docker
Construction d'un environnement de développement simple Docker + Django
Créer un environnement de développement Go avec WSL2 + Docker Desktop + VSCode (Remote --Containers)
Construire un SPA pour Laravel 6.2 / Vue.js / Nginx / Mysql / Redis avec Docker
Créer un environnement de développement pour Django + MySQL + nginx avec Docker Compose
Créer un environnement de développement pour Docker + Rails6 + Postgresql
[Memo] Créez facilement un environnement CentOS 8 avec Docker
Construction de l'environnement de développement Simple Docker Compose + Django
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Créer un environnement Laravel sur une instance AWS
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
Créer un conteneur pour Docker x Laravel phpMyAdmin
[Win10] Créer un environnement de développement JSF avec NetBeans
Préparer un environnement de scraping avec Docker et Java
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Créer un environnement mecab (dictionnaire NEologd) avec Docker (ubuntu)
[Rails] Comment créer un environnement avec Docker
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Créer un environnement de développement Spring Boot avec docker
Créer un environnement de développement Java avec VS Code
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
Comment créer un environnement Docker avec Gradle pour IntelliJ
Créez un environnement Ruby2.7.x + Rails6.0.x + MySQL8.0.x avec Docker
Créez un environnement de développement Docker + Laravel PHP + Vue.js en 5 minutes
[Note] Créez un environnement Java à partir de zéro avec docker
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker