Construire un SPA pour Laravel 6.2 / Vue.js / Nginx / Mysql / Redis avec Docker

Qu'est-ce que Docker

Cela fait longtemps que l'utilité de Docker et l'utilité de SPA (Single Page Application) ont été soulignées, et je pense que Docker / SPA est devenu très populaire ces jours-ci. Docker crée un environnement virtuel pour exécuter des applications Web telles que Laravel, et cet environnement Docker peut également être déployé en production. Cette fois, créons un SPA PHP + Vue.js avec Laravel sur Docker.

Docker-comppse est un soi-disant outil d'orchestration qui crée et gère plusieurs images Docker.

Installer Docker

Tout d'abord, installez Docker.

  1. Les utilisateurs de Windows doivent utiliser Docker pour Windows. Si vous utilisez Windows 7 ou quelque chose du genre, vous pourrez peut-être utiliser Boîte à outils Docker (notez que la boîte à outils est obsolète)
  2. Les utilisateurs Mac doivent utiliser Docker pour Mac.
  3. Les utilisateurs d'Ubuntu 18 comme moi l'installent comme suit: Tout d'abord, effacez l'ancien Docker.
$ sudo apt-get remove docker docker-engine docker.io

Ensuite, installez à partir du référentiel officiel.

$ 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

Vérifiez si Docker a été installé avec succès

Vérifions si Docker a été installé avec succès. Si vous tapez la commande suivante sur le terminal et que la version est affichée, cela réussit.

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

C'est OK si la version peut être affichée comme ça.

Vérifiez également Docker-compose

Docker-compose doit avoir été installé avec l'installation de Docker. Vérifiez avec la commande suivante. Si la version est affichée, elle réussit.

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

Essayez d'utiliser Docker et Docker-compose

Supprimez le fichier docker-compose de mon référentiel git et exécutez-le avec la commande suivante.

$ 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

Ensuite, vous pouvez voir que Core UI vue s'exécute localement. http://localhost:10080/

Cependant, comme c'était gênant, je n'ai fait que le tableau de bord et les pages de connexion correctement. Cliquez ici pour une page de démonstration appropriée. https://coreui.io/vue/demo/3.1.0/#/dashboard

Puisqu'il s'agit d'une licence MIT, elle peut être utilisée à des fins commerciales si les droits sont correctement affichés. Screenshot from 2020-11-11 23-27-46.png

docker compose le fichier de configuration

Le fichier docker-compose supprimé de Git a ces paramètres. Vous pouvez voir que vous utilisez correctement Nginx / Mysql / Redis.

version: "3.5"
#Utilisé lors du partage de volume entre conteneurs
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

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 Laravel / Docker avec VSCode devcontainer
Créer un conteneur pour Docker x Laravel phpMyAdmin
Créez un environnement de développement d'applications Web qui utilise Java, MySQL et Redis avec Docker CE pour Windows
Créer un environnement Node.js avec Docker
Créez un environnement Docker + Laravel avec Laradock
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Créer un environnement de développement PureScript avec Docker
[docker] [nginx] Créer un ALB simple avec nginx
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Créer un environnement de développement Wordpress avec Docker
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Créez rapidement un environnement de développement WordPress avec Docker
Créer un environnement de développement pour Docker, Java, vs code
Comment créer un environnement Docker avec Gradle pour IntelliJ
Créez un environnement de développement Docker + Laravel PHP + Vue.js en 5 minutes
[Note] Créez un environnement Python3 avec Docker dans EC2
Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
(Pour moi-même) Construisez un laboratoire git avec ubuntu 18.04 + docker pour la maison (Remarque)
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Créer une image Android pour Orange Pi 4 avec Docker
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Express ~
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Créez un conteneur qui formate automatiquement le code Docker x Laravel
Mesures des autorisations lors de la construction de MySQL avec Docker sur WSL2
Déployer avec EC2 / Docker / Laravel
Créer un environnement Docker avec WSL
Construire DynamoDB local avec Docker
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ MySQL ~
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Sequelize ~
Ligne de commande qui vous permet de créer une structure de répertoires pour créer un environnement Laravel avec Docker en une seule fois
Créer un environnement local Couchbase avec Docker
Construire un projet Java avec Gradle