[Milight Design In-house Study Group # 5] Lisez docker-compose.yml et Dockerfile ligne par ligne

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

construire

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 le conteneur

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>

Article de référence

Recommended Posts

[Milight Design In-house Study Group # 5] Lisez docker-compose.yml et Dockerfile ligne par ligne
[Session d'étude interne] Principes de base de l'expression Java-Lambda et de l'API Stream- (13/07/2017)
[Session d'étude interne] Gestion des exceptions Java (2017/04/26)