Erstellen Sie mit Docker ein SPA für Laravel 6.2 / Vue.js / Nginx / Mysql / Redis

Was ist Docker?

Es ist lange her, dass die Nützlichkeit von Docker und die Nützlichkeit von SPA (Single Page Application) hervorgehoben wurden, und ich denke, dass Docker / SPA heutzutage sehr beliebt geworden ist. Docker erstellt eine virtuelle Umgebung zum Ausführen von Webanwendungen wie Laravel. Diese Docker-Umgebung kann auch in der Produktion bereitgestellt werden. Dieses Mal erstellen wir ein PHP + Vue.js SPA mit Laravel auf Docker.

Docker-comppse ist ein sogenanntes Orchestrierungswerkzeug, das mehrere Docker-Images erstellt und verwaltet.

Installieren Sie Docker

Installieren Sie zuerst Docker.

  1. Windows-Benutzer sollten [Docker für Windows] verwenden (https://docs.docker.com/docker-for-windows/). Wenn Sie Windows 7 oder etwas anderes verwenden, können Sie möglicherweise Docker-Toolbox verwenden (beachten Sie, dass die Toolbox veraltet ist).
  2. Mac-Benutzer sollten [Docker für Mac] verwenden (https://docs.docker.com/docker-for-mac/).
  3. Ubuntu 18-Benutzer wie ich installieren es wie folgt: Löschen Sie zuerst den alten Docker.
$ sudo apt-get remove docker docker-engine docker.io

Dann installieren Sie aus dem offiziellen Repository.

$ sudo apt-get update
# To enable https connection.
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# To download GPG key.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Install the docker repository.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" 
$ sudo apt-get update
# Install Docker.
$ sudo apt-get install docker-ce

Überprüfen Sie, ob Docker erfolgreich installiert wurde

Lassen Sie uns überprüfen, ob Docker erfolgreich installiert wurde. Wenn Sie den folgenden Befehl auf dem Terminal eingeben und die Version angezeigt wird, ist dies erfolgreich.

docker --version
#Docker version 19.03.5, build 633a0ea838

Es ist in Ordnung, wenn die Version so angezeigt werden kann.

Überprüfen Sie auch Docker-compose

Docker-compose sollte zusammen mit der Docker-Installation installiert worden sein. Überprüfen Sie mit dem folgenden Befehl. Wenn die Version angezeigt wird, ist sie erfolgreich.

docker-compose -v
#docker-compose version 1.24.1, build 4667896b

Versuchen Sie es mit Docker und Docker-Compose

Löschen Sie die Docker-Compose-Datei aus meinem Git-Repository und führen Sie sie mit dem folgenden Befehl aus.

$ git clone https://github.com/lechatthecat/laravel-coreuivue-integration
$ cd laravel-coreuivue-integration
$ docker-compose up -d --build
$ docker-compose exec laravel ash
$ ash ./laravel_build.sh

Dann können Sie sehen, dass Core UI vue lokal ausgeführt wird. http://localhost:10080/

Da es jedoch problematisch war, habe ich nur das Dashboard und die Anmeldeseiten ordnungsgemäß erstellt. Klicken Sie hier für eine richtige Demoseite. https://coreui.io/vue/demo/3.1.0/#/dashboard

Da es sich um eine MIT-Lizenz handelt, kann sie für kommerzielle Zwecke verwendet werden, wenn die Rechte ordnungsgemäß angezeigt werden. Screenshot from 2020-11-11 23-27-46.png

Docker komponieren Konfigurationsdatei

Die von Git abgelegte Docker-Compose-Datei hat diese Einstellungen. Sie können sehen, dass Sie Nginx / Mysql / Redis richtig verwenden.

version: "3.5"
#Wird verwendet, wenn das Volumen zwischen Containern geteilt wird
x-services-volume:
  &laravel-volume
  type: bind
  source: ./laravel-coreui
  target: /laravel-coreui

services:
  laravel:
    container_name: laravel
    depends_on:
      - mydb
      - myredis
    build:
      context: .
      dockerfile: docker/laravel/Dockerfile
      args:
        - TZ=${TZ}
    # bind mount
    volumes:
      - <<: *laravel-volume
      - ./docker/laravel/laravel_build.sh:/laravel-coreui/laravel_build.sh
      - ./logs:/var/log/php
      - ./docker/laravel/php.ini:/usr/local/etc/php/php.ini
    working_dir: /laravel-coreui
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME}
      - DB_USERNAME=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
      - TZ=${TZ}
    networks:
      - app_net
  # nginx 1.17
  web:
    container_name: my_nginx
    image: nginx:1.17-alpine
    depends_on:
      - laravel
    ports:
      - 10080:80
    volumes:
      - *laravel-volume
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:z
    environment:
      - TZ=${TZ}
    networks:
      - app_net
  # MySQL 8.0
  mydb:
    container_name: mydb
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql:z
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf:z
    ports:
      - 13306:3306
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASSWORD}
      - TZ=${TZ}
    networks:
      - app_net
  # redis 5.0.5 
  myredis:
    container_name: myredis
    image: redis:5.0.5-alpine
    # bind mount
    volumes:
      - redis-store:/data
      - ./logs:/var/log/redis.log:z
      - ./docker/redis/my.conf:/etc/redis/my.conf:z
    ports:
      - 16379:6379
    command: redis-server /etc/redis/my.conf
    networks:
      - app_net
networks:
    # Containers in same network can access each other by using its container name as host name
    app_net:
        driver: "bridge"
volumes:
  db-store:
  redis-store:

Recommended Posts

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 Laravel / Docker-Umgebung mit VSCode devcontainer
Erstellen Sie einen Container für Docker x Laravel phpMyAdmin
Erstellen Sie mit Docker CE für Windows eine Webanwendungsentwicklungsumgebung, die Java, MySQL und Redis verwendet
Erstellen Sie mit Docker eine Node.js-Umgebung
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
Erstellen Sie mit Docker eine PureScript-Entwicklungsumgebung
[Docker] [Nginx] Erstellen Sie mit Nginx eine einfache ALB
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
[Kopieren und Einfügen] Erstellen Sie mit Docker Compose Part 2 eine Laravel-Entwicklungsumgebung
Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials (Rails 6 + PostgreSQL + Webpack)
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
Erstellen Sie die Entwicklungsumgebung von Docker + Laravel PHP + Vue.j in 5 Minuten
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
So beenden Sie Docker für Mac und erstellen eine Docker-Entwicklungsumgebung mit Ubuntu + Vagrant
(Für mich) Baue ein Git-Labor mit Ubuntu 18.04 + Docker für zu Hause (Hinweis)
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Erstellen Sie mit Docker ein Android-Image für Orange Pi 4
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Erstellen Sie einen Container, der den Docker x Laravel-Code automatisch formatiert
Maßnahmen für Berechtigungen beim Erstellen von MySQL mit Docker auf WSL2
Bereitstellung mit EC2 / Docker / Laravel
Erstellen einer Docker-Umgebung mit WSL
Erstellen Sie DynamoDB local mit Docker
So erstellen Sie mit Docker ~ MySQL ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
Konstruktionsverfahren für die Docker-Umgebung "Rails 6 x MySQL 8" für die gemeinsame Nutzung mit Teams
So erstellen Sie mit Docker ~ Sequelize ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Befehlszeile, mit der Sie eine Verzeichnisstruktur zum Erstellen einer Laravel-Umgebung mit Docker auf einmal erstellen können
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Erstellen eines Java-Projekts mit Gradle