Configurer un environnement Wordpress Docker sans utiliser l'image Worpdress

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.

environnement

La raison ultime

Les conditions que vous souhaitez atteindre

--nginx + php + environnement mysql

Version de chaque conteneur

organisation des fichiers

├── docker-compose.yml
├── nginx
│   └── default.conf
├── php
│   └── Dockerfile
└── www
    └── html
        └── [fichier wordpress]

procédure

  1. Créer un environnement nginx + php
  2. Ajoutez mysql
  3. Ajoutez wordpress et définissez

1. Créer un environnement nginx + php

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();

Démarrage du conteneur

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.

2. Ajoutez mysql

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.

Redémarrez le conteneur

//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.

3. Ajoutez wordpress et définissez

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 /.

organisation des fichiers

├── 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. スクリーンショット 2020-09-29 20.53.06.png Enregistrement de la base de données. https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_481714_d321077c-de34-778b-145c-429722abf7c6.png Installation. スクリーンショット 2020-09-29 21.32.26.png Entrez les informations sur le site et les informations sur l'utilisateur administrateur. スクリーンショット 2020-09-28 14.26.59.png J'ai enregistré un utilisateur connecté, donc je me suis connecté. スクリーンショット 2020-09-29 21.42.47.png

Vous avez atteint l'écran de gestion de wordpress. スクリーンショット 2020-09-29 21.53.48.png

Où je me suis fait prendre

Comprendre les volumes

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

Commandes fréquemment utilisées

$ 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

Configurer un environnement Wordpress Docker sans utiliser l'image Worpdress
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Créez rapidement un environnement Web à l'aide de Docker
Créer un environnement de développement Wordpress avec Docker
Créez instantanément un environnement Privoxy + Tor à l'aide de Docker
Créez rapidement un environnement de développement WordPress avec Docker
Poussez l'image vers le hub docker à l'aide de Jib
Jusqu'au lancement d'un conteneur Docker construit avec RedHat Quarkus
Trouvez le reste divisé par 3 sans utiliser de nombre
Une commande qui nettoie définitivement l'environnement docker local
Essayez de créer un environnement de développement Java à l'aide de Docker
Créez une image Docker avec le JDK Oracle installé (miam
J'ai essayé de construire l'environnement petit à petit en utilisant docker
Configurer GitLab avec docker
Ce que les débutants de Docker ont fait avant de configurer l'environnement d'apprentissage nginx
Configurez facilement un serveur Jenkins sur AWS à l'aide de l'AMI de Bitnami
Installez Docker sur Ubuntu et configurez la connexion à distance à l'aide de tls
Comment définir l'image pour dessiner à gauche / à droite du bouton à l'aide de la police d'icône (Iconics)
Créez un environnement Vue3 avec Docker!
Créer un environnement Node.js avec Docker
Ecrire une casse nulle en utilisant le type facultatif sans utiliser l'instruction if
Étapes minimales pour configurer un environnement Ruby avec rbenv sur Ubuntu 20.04
Configurez une interface graphique Java dans un thread séparé pour conserver le