J'ai décidé de créer un environnement Wordpress avec Docker, mais il était assez difficile de le mettre en place sans utiliser une image, donc je vais le laisser comme un mémorandum. C'est juste mon dossier, donc c'est peut-être plus facile ou faux.
--nginx + php + environnement mysql
├── docker-compose.yml
├── nginx
│ └── default.conf
├── php
│ └── Dockerfile
└── www
└── html
└── [fichier wordpress]
Créez un fichier pour créer chaque conteneur. Le premier fichier à construire est:
├── docker-compose.yml
├── nginx
│ └── default.conf
├── php
│ └── Dockerfile
└── www
└── html
└── index.php
docker-compose.yml
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:1.12.2
ports:
- 8080:80
volumes:
- ./www/html:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./www/html:/var/www/html
nginx/default.conf Ajoutez une description afin que index.php soit également affiché lors de l'accès à http: // localhost: 8080.
nginx/default.conf
server {
listen 80;
server_name localhost;
root /var/www/html;
#Index ici.Ajouter php
index index.html index.htm index.php;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#Décommenter pour faire fonctionner PHP
location ~ \.php$ {
root /var/www/html;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
php/Dockerfile
Vous pouvez le spécifier directement dans docker-compose.yml
avec l'image, mais je crée un Dockerfile pour ajouter la description lors de l'ajout de mysql plus tard.
php/Dockerfile
FROM php:7.2-fpm
www/html/index.php
www/html/index.php
<?php
phpinfo();
Accédez au répertoire de travail avec la commande cd et utilisez la commande suivante
// docker-compose.Installez le conteneur décrit dans yml
$ docker-compose up -d
//Vérifiez si le conteneur est créé / démarré(-En ajoutant a, il est possible d'afficher les conteneurs qui n'ont pas démarré.)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0aed3ada6a01 docker_wp_php "docker-php-entrypoi…" 19 seconds ago Up 17 seconds 9000/tcp task4_wp
b698e1032798 nginx:1.12.2 "nginx -g 'daemon of…" 19 seconds ago Up 17 seconds 0.0.0.0:8080->80/tcp docker_wp_nginx_1
Si vous accédez à http: // localhost: 8080 et que phpinfo s'affiche, cela réussit.
Il n'y a pas d'ajouts ou de modifications à la structure du fichier, mais il y a des ajouts à php / Dockerfile
et docker-compose.yml
lors de l'ajout de mysql.
php/Dockerfile
php/Dockerfile
FROM php:7.2-fpm
//Ajoutez les 2 lignes suivantes
RUN apt-get update
RUN docker-php-ext-install pdo_mysql mysqli
docker-compose.yml
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:1.12.2
ports:
- 8080:80
volumes:
- ./www/html:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
container_name: "task4_wp"
volumes:
- ./www/html:/var/www/html
//Ajoutez la description de mysql ci-dessous
db:
image: mysql:5.6
ports:
- 3306:3306
environment:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- wp_db:/var/lib/mysql
volumes:
wp_db:
MYSQL_USER
et MYSQL_PASSWORD
définissent l'utilisateur à utiliser lors de la connexion à mysql plus tard.
MYSQL_DATABASE
est la base de données utilisée lorsque wordpress est inséré.
De plus, le contenu de la base de données n'est pas monté comme «www / html», mais est placé en dehors du fichier en tant que volume.
//Arrêtez et supprimez le conteneur que vous venez de créer
$ docker-compose down
// docker-compose.Démarrez le conteneur décrit dans yml
$ docker-compose up -d
//Vérifiez si le conteneur est créé / démarré
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9d13e9441f nginx:1.12.2 "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp docker_wp_nginx_1
19451d8dfd82 docker_wp_php "docker-php-entrypoi…" 3 minutes ago Up 3 minutes 9000/tcp docker_wp_php_1
7f37f92bed6a mysql:5.6 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp docker_wp_db_1
Si vous accédez à http: // localhost: 8080, vous devriez voir phpinfo comme avant. Cela ne change pas en surface, mais si STATUS est UP, le démarrage est réussi.
Enfin, mettez wordpress.
Vous pouvez télécharger wordpress à partir de la page suivante.
https://ja.wordpress.org/download/
Supprimez / www / html / index.php
, décompressez-le, copiez le contenu de wordpress /
et copiez-le danswww / html /
.
├── docker-compose.yml
├── nginx
│ └── default.conf
├── php
│ └── Dockerfile
└── www
└── html
└── [fichier wordpress]
Lorsque vous accédez à http: // localhost: 8080, vous verrez l'écran ci-dessous. Enregistrement de la base de données. Installation. Entrez les informations sur le site et les informations sur l'utilisateur administrateur. J'ai enregistré un utilisateur connecté, donc je me suis connecté.
Vous avez atteint l'écran de gestion de wordpress.
Le code que j'ai écrit cette fois a également des descriptions à l'intérieur et à l'extérieur du conteneur. J'ai compris que les volumes internes servent à partager des fichiers localement avec le conteneur, mais les volumes externes ont une méthode de description légèrement différente, et l'emplacement du dossier n'est-il pas spécifié en premier lieu? N'est-ce pas à cause de la monture ...? Je me demandais si je ne devrais pas l'utiliser. Réflexion. Cet article était facile à comprendre. Docker a sérieusement étudié le volume
$ docker-compose up -d
//Le docker directement sous le dossier actuel-compose.Exécutez yml en arrière-plan
$ docker-compose stop
// docker-compose.Arrêtez le conteneur écrit en yml
$ docker-compose start
//Démarrez le conteneur
$ docker-compose down
//Arrêter le conteneur → supprimer
$ docker-compose down --rmi all -v
// docker-compose.Tous les conteneurs, images et volumes créés décrits dans yml disparaissent.
$ docker exec -it [ID du conteneur] /bin/bash
//Connectez-vous au conteneur (l'ID du conteneur est`docker ps`Peut être confirmé à)
$ docker ps
//Répertorier les conteneurs en cours d'exécution
$ docker ps -a
//Afficher tout, y compris les conteneurs qui ne sont pas démarrés
$ docker images
//Liste des images
$ docker rm [ID du conteneur]
//Supprimez le conteneur. J'obtiens une erreur en essayant de supprimer un conteneur en cours d'exécution
$ docker rm [ID du conteneur] -f
//Supprimez le conteneur. Supprimer de force même s'il est en mouvement
$ docker rmi [ID de l'image]
//Supprimez l'image. J'obtiens une erreur lorsqu'il y a un conteneur
$ docker rmi [ID de l'image] -f
//Supprimez l'image. Supprimer de force même s'il y a un conteneur
Recommended Posts