Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer

Überblick

In diesem Artikel wird erläutert, wie Sie eine Laravel-Umgebung mit dem Entwicklungscontainer von VS Code erstellen. Sie können eine Umgebung mit hoher Geschwindigkeit erstellen, solange Sie über die zu verwendenden Tools verfügen. Da Sie Docker verwenden, können Sie sie als einheitliche Entwicklungsumgebung für Ihr Team verwenden. Wenn Sie es vorerst verschieben möchten, verwenden Sie bitte den Repository-Link.

Repository

https://github.com/naoyayamamoto/laravel-docker-sample Da es als Vorlagen-Repository vorbereitet ist, kann es auch als Vorlage verwendet werden.

Benutztes Werkzeug

Verwenden Sie die oben genannten Werkzeuge. Installationsdetails werden für "Docker" und "Visual Studio Code" weggelassen. "Visual Studio Code Remote - Container" ist ein VS Code-Plug-In von Microsoft. Sie können es über den Link in VS Code installieren.

wie benutzt man

Öffnen Sie das Repository mit VS Code

$ git clone https://github.com/naoyayamamoto/laravel-docker-sample
$ code laravel-docker-sample
#Wenn Sie den Befehl code nicht haben, öffnen Sie das Repository mit VS Code

Öffnen Sie VS Code mit devcontaner

  1. Wenn VS-Code "Visual Studio Code Remote - Container" enthält, wurde unten links ein Symbol hinzugefügt. Drücken Sie es, um das Dialogfeld zu öffnen, oder "Alle Befehle anzeigen", cmd + Umschalt + P, um das Dialogfeld zu öffnen.
  2. Führen Sie "Remote-Container: In Container erneut öffnen" aus, um die Umgebung vorzubereiten.
  3. Es dauert einige Zeit, um Docker zum ersten Mal vorzubereiten, aber nach dem zweiten Mal wird es mit hoher Geschwindigkeit gestartet.

Zugriffsbestätigung

Gehen Sie zu "http: // localhost: 8000" und Sie sollten die Startseite von Laravel sehen.

laravel-8-top.jpg

Kommentar

Wenn Sie devcontainer öffnen, wird die Docker-Umgebung basierend auf .devcontainer / docker-compose.yml erstellt. Wir verwenden die folgenden Container und werden sie jeweils erläutern.

nginx:alpine (web)

mysql:8 (db)

Angepasst für VS Code PHP: 7-fpm (App)

Bonus

Dockerfile für die Produktionsumgebung

Eine Docker-Datei, die für die Produktion erstellt wird, wurde dem Repository hinzugefügt. Verwenden Sie sie daher als Anpassungsquelle. Wir verwenden einen mehrstufigen Build, um js zu kompilieren und Composer im Voraus zu installieren, um das endgültige Image so klein wie möglich zu halten. Ich habe Build-Tests nur mit Github-Aktionen bestanden.

Bei Verwendung mit Kubernetes

Als Referenz ist dies eine Einstellung bei Verwendung mit Kubernetes. Es wird angenommen, dass Nginx und PHP als 1POD ausgeführt werden.

Referenz deploy.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

Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Erstellen Sie mit Docker eine Node.js-Umgebung
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
Erstellen einer Docker-Umgebung mit WSL
[Kopieren und Einfügen] Erstellen Sie mit Docker Compose Part 2 eine Laravel-Entwicklungsumgebung
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Erstellen Sie mit Pleiades 4.8 eine Tomcat 8.5-Umgebung
Erstellen Sie eine WAS-Ausführungsumgebung aus Docker
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
[Docker] Erstellen Sie die Ausführungsumgebung von Jupyter Lab mit Docker
Erstellen Sie eine Umgebung mit Docker unter AWS
Erstellen Sie mit Docker eine TensorFlow-Betriebsüberprüfungsumgebung
So erstellen Sie eine Rails 6-Umgebung mit Docker
Einfache Konstruktion der Docker + Django-Entwicklungsumgebung
Build Go-Entwicklungsumgebung mit WSL2 + Docker Desktop + VSCode (Remote - Container)
Erstellen Sie mit Docker ein SPA für Laravel 6.2 / Vue.js / Nginx / Mysql / Redis
Erstellen Sie mit Docker Compose eine Entwicklungsumgebung für Django + MySQL + nginx
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
[Memo] Erstellen Sie mit Docker ganz einfach eine CentOS 8-Umgebung
Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
Erstellen Sie eine Laravel-Umgebung auf einer AWS-Instanz
Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials (Rails 6 + PostgreSQL + Webpack)
Erstellen Sie einen Container für Docker x Laravel phpMyAdmin
[Win10] Erstellen Sie eine JSF-Entwicklungsumgebung mit NetBeans
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Erstellen Sie mit Docker (Ubuntu) eine Mecab-Umgebung (NEologd Dictionary).
[Rails] So erstellen Sie eine Umgebung mit Docker
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Ubuntu-Version).
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Mac-Version).
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
Erstellen Sie mit Docker eine Ruby2.7.x + Rails6.0.x + MySQL8.0.x-Umgebung
Erstellen Sie die Entwicklungsumgebung von Docker + Laravel PHP + Vue.j in 5 Minuten
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker