Création de l'environnement de développement Laravel le plus puissant à l'aide de Docker [Nouvelle édition] --Qiita
Jetons un coup d'œil à ce que font le docker-composer.yml
et le Dockerfile
utilisés ligne par ligne.
https://github.com/ucan-lab/docker-laravel
docker-compose.yml
version: "3.8" #① Spécifiez la version à utiliser dans le fichier docker
volumes: #(2) Une zone de volume est sécurisée dans la VM
db-store:
php-fpm-socket:
services: #③ Chaque service est un conteneur
app: #④ Nom du service (vous pouvez l'ajouter arbitrairement)
build: ./docker/php #⑤ Je construis avec le fichier docker ici
volumes:
- php-fpm-socket:/var/run/php-fpm #⑥ Dans la zone du corps du VM, dans le conteneur/var/run/php-fpm est monté
- ../backend:/work/backend
web:
build: ./docker/nginx
ports:
- 80:80
volumes:
- php-fpm-socket:/var/run/php-fpm
- ../backend:/work/backend
db:
build: ./docker/mysql
volumes:
- db-store:/var/lib/mysql
ports:
- 3306:3306
① Référence Créer un fichier version 3 | Document Docker Comment écrire les changements de fichier en fonction de la spécification de cette version
(2) Il existe une machine virtuelle dans Docker pour mac et une zone pour le montage des données du conteneur est sécurisée. Les données ne disparaissent pas même si le conteneur est supprimé en le montant sur la VM Vous pouvez lui donner le nom de votre choix.
--Un service
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------
docker-laravel_app_1 docker-php-entrypoint php-fpm Up 9000/tcp
docker-laravel_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
docker-laravel_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp
Dockerfile
MySQL
https://github.com/ucan-lab/docker-laravel/blob/master/infra/docker/mysql/Dockerfile
#① De dockerhub à mysql8.Obtenir 0 images
FROM mysql:8.0
#② LABEL est défini
LABEL maintainer="ucan-lab <[email protected]>"
#(3) Une valeur est ajoutée à la variable d'environnement du système d'exploitation.
ENV TZ=UTC \ #Fuseau horaire
#La variable d'environnement spécifiée par MYSQL est spécifiée.
MYSQL_DATABASE=laravel_local \
MYSQL_USER=phper \
MYSQL_PASSWORD=secret \
MYSQL_ROOT_PASSWORD=secret
#④ Le fichier hôte est copié dans le conteneur
COPY ./my.cnf /etc/my.cnf
-① L'image est acquise depuis https: //hub.docker.com / _ / mysql
-Si vous n'écrivez pas: 8.0, vous obtiendrez la dernière version
――② Il y a un public qui écrit le responsable avec l'étiquette après From.
――③ Si vous passez la variable d'environnement à l'image mysql, l'image officielle la définira pour vous.
--Il est décrit dans «Variables d'environnement» de https://hub.docker.com/_/mysql
-④ La gauche est l'hôte et la droite est le chemin du conteneur
13:01:24 ❯ docker build -t mysql_image .
Sending build context to Docker daemon 2.56kB
Step 1/4 : FROM mysql:8.0
---> 0d64f46acfd1
Step 2/4 : LABEL maintainer="ucan-lab <[email protected]>"
---> Using cache
---> ef5acb641867
Step 3/4 : ENV TZ=UTC MYSQL_DATABASE=laravel_local MYSQL_USER=phper MYSQL_PASSWORD=secret MYSQL_ROOT_PASSWORD=secret
---> Using cache
---> 3eb31d9f4c84
Step 4/4 : COPY ./my.cnf /etc/my.cnf
---> Using cache
---> c064e3fa414a
Successfully built c064e3fa414a
Successfully tagged mysql_image:latest
13:08:35 ❯ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql_image latest f9666eb795b6 8 seconds ago 544MB
--Un conteneur est créé en fonction de l'image
Essayez de lancer ubuntu sur Docker Hub
13:08:43 ❯ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
54ee1f796a1e: Pull complete
f7bfea53ad12: Pull complete
46d371e02073: Pull complete
b66c17bbf772: Pull complete
Digest: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Downloaded newer image for ubuntu:latest
root@d9d9fe415292:/# exit
exit
--Supprimer le conteneur
$ docker rm <CONTAINER ID>
--Supprimer l'image
$ docker rmi <IMAGE ID>