Erstellen der stärksten Laravel-Entwicklungsumgebung mit Docker [Neue Ausgabe] --Qiita Werfen wir einen Blick darauf, was die in "docker-composer.yml" und "Dockerfile" verwendeten Zeilen für Zeilen tun.
https://github.com/ucan-lab/docker-laravel
docker-compose.yml
version: "3.8" #① Geben Sie die Version an, die in der Docker-Datei verwendet werden soll
volumes: #(2) In der VM ist ein Volume-Bereich gesichert
db-store:
php-fpm-socket:
services: #③ Jeder Dienst ist ein Container
app: #④ Dienstname (Sie können ihn beliebig hinzufügen)
build: ./docker/php #⑤ Ich baue hier mit der Docker-Datei
volumes:
- php-fpm-socket:/var/run/php-fpm #⑥ Im Bereich des VM-Körpers im Container/var/run/php-fpm ist montiert
- ../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
① Referenz zur Dateiversion 3 erstellen | Docker-Dokument Wie die Dateiänderungen geschrieben werden, hängt von der Spezifikation dieser Version ab
(2) In Docker für Mac befindet sich eine VM, und ein Bereich zum Mounten von Containerdaten ist gesichert. Daten verschwinden auch dann nicht, wenn der Container durch Mounten auf der VM gelöscht wird Sie können ihm einen beliebigen Namen geben.
--Bedienung
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
#① Vom Dockerhub zum Mysql8.0 Bilder erhalten
FROM mysql:8.0
#② LABEL ist eingestellt
LABEL maintainer="ucan-lab <[email protected]>"
#(3) Der Umgebungsvariablen des Betriebssystems wird ein Wert hinzugefügt.
ENV TZ=UTC \ #Zeitzone
#Die von MYSQL angegebene Umgebungsvariable wird angegeben.
MYSQL_DATABASE=laravel_local \
MYSQL_USER=phper \
MYSQL_PASSWORD=secret \
MYSQL_ROOT_PASSWORD=secret
#④ Die Hostdatei wird in den Container kopiert
COPY ./my.cnf /etc/my.cnf
-① Das Bild wird von https: //hub.docker.com / _ / mysql
aufgenommen
-Wenn Sie nicht schreiben: 8.0, erhalten Sie die neueste Version
――② Nach Von gibt es ein Publikum, das den Betreuer mit Etikett schreibt.
――③ Wenn Sie die Umgebungsvariable an das MySQL-Image übergeben, wird sie vom offiziellen Image für Sie festgelegt.
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
Versuchen Sie, Ubuntu auf dem Docker-Hub zu starten
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
$ docker rm <CONTAINER ID>
--Lösche Bild
$ docker rmi <IMAGE ID>