web-dev-qa-db-fra.com

php_network_getaddresses: échec de getaddrinfo dans l'administrateur de Docker

J'ai un problème d'accès à l'administrateur dans mon conteneur Docker avec l'application laravel 5/mysql. J'ai une erreur:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve

Mon docker-compose.yml:

version: '3'

services:

    votes_app:
        build:
            context: ./web
            dockerfile: Dockerfile.yml

        container_name: votes_app_container
        environment:
            - Apache_RUN_USER=#1000
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}


    votes_db:
        image: mysql:5.6.41
        container_name: votes_db_container

        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql


    votes_adminer:
        image: adminer
        container_name: votes_adminer_container
        restart: always
        ports:
            - 8082:8080
        links:
            - votes_db


    votes_composer:
        image: composer:1.6
        container_name: votes_composer_container
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

J'ai différents ports pour l'application et le conteneur db.

Ici https://hub.docker.com/_/adminer/ J'ai trouvé:

Utilisation avec un serveur externe Vous pouvez spécifier l'hôte par défaut avec la variable d'environnement ADMINER_DEFAULT_SERVER. Cela est utile si vous vous connectez à un serveur externe ou à un conteneur Docker nommé autre que la base de données par défaut.

docker run -p 8080:8080 -e ADMINER_DEFAULT_SERVER=mysql adminer

Dans la console de mon application, j'exécute la commande

$ docker run -p 8089:8080 -e ADMINER_DEFAULT_SERVER=votes_db adminer 

avec inutilisé dans mon port d'applications et cette commande n'a pas réussi de toute façon, car j'ai eu la même erreur en essayant de me connecter à l'administrateur https://imgur.com/a/4HCdC1W .

Quelle est la bonne façon?

BLOC MODIFIÉ # 2:

Dans mon docker-compose.yml:

version: '3'

services:

    votes_app:
        build:
            context: ./web
            dockerfile: Dockerfile.yml

        container_name: votes_app_container
        environment:
            - Apache_RUN_USER=#1000
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}


    db:
        image: mysql:5.6.41
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql


    adminer:
        image: adminer
        restart: always
        ports:
            - 8082:8080
        links:
            - db


    votes_composer:
        image: composer:1.6
        container_name: votes_composer_container
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

J'ai reconstruit l'application mais je n'ai pas réussi à me connecter à l'administrateur: https://imgur.com/a/JWVGfBA

J'exécute dans la console de mon système d'exploitation pointant vers un autre port 8089 inutilisé:

$ docker run -p 8089:8080 -e ADMINER_DEFAULT_SERVER=db adminer
PHP 7.2.11 Development Server started at Thu Nov  1 07:00:46 2018
[Thu Nov  1 07:01:11 2018] ::ffff:172.17.0.1:34048 [200]: /
[Thu Nov  1 07:01:20 2018] ::ffff:172.17.0.1:34052 [302]: /
[Thu Nov  1 07:01:21 2018] ::ffff:172.17.0.1:34060 [403]: /?server=db&username=root

Mais encore une fois la connexion d'erreur à l'administrateur sur le port 8089, mais le message d'erreur était différent:

https://imgur.com/a/a8qM4bt

Qu'est-ce qui ne va pas ?

BLOC MODIFIÉ # 3:

Je suppose que oui, car après avoir reconstruit le conteneur, je suis entré dans la boîte et je vois "root" dans la sortie de la console:

$ docker-compose exec votes_app bash
root@a4aa907373f5:/var/www/html# ls -la
total 1063
drwxrwxrwx 1 root root   4096 Oct 27 12:01 .
drwxr-xr-x 1 root root   4096 Oct 16 00:11 ..
-rwxrwxrwx 1 root root    234 Oct 13 07:15 .editorconfig
-rwxrwxrwx 1 root root   1029 Oct 31 06:10 .env
-rwxrwxrwx 1 root root    651 Oct 13 07:15 .env.example
drwxrwxrwx 1 root root   4096 Nov  1 11:10 .git
-rwxrwxrwx 1 root root    111 Oct 13 07:15 .gitattributes
-rwxrwxrwx 1 root root    294 Oct 13 07:15 .gitignore
-rwxrwxrwx 1 root root   4356 Oct 13 07:15 1.txt
drwxrwxrwx 1 root root      0 Oct 13 07:15 __DOCS
drwxrwxrwx 1 root root      0 Oct 13 07:15 __SQL
drwxrwxrwx 1 root root   4096 Oct 13 07:15 app
-rwxrwxrwx 1 root root   1686 Oct 13 07:15 artisan                                                                                                                                                                     
drwxrwxrwx 1 root root      0 Oct 13 07:15 bootstrap                                                                                                                                                                   
-rwxrwxrwx 1 root root   2408 Oct 13 07:15 composer.json                                                                                                                                                               
-rwxrwxrwx 1 root root 200799 Oct 13 07:15 composer.lock                                                                                                                                                               
drwxrwxrwx 1 root root   4096 Oct 13 07:15 config                                                                                                                                                                      
drwxrwxrwx 1 root root   4096 Oct 13 07:15 database                                                                                                                                                                    
-rwxrwxrwx 1 root root  52218 Oct 17 05:25 db_1_err.txt                                                                                                                                                                
-rwxrwxrwx 1 root root 482562 Oct 13 07:15 package-lock.json                                                                                                                                                           
-rwxrwxrwx 1 root root   1168 Oct 13 07:15 package.json                                                                                                                                                                
-rwxrwxrwx 1 root root   1246 Oct 13 07:15 phpunit.xml                                                                                                                                                                 
drwxrwxrwx 1 root root   4096 Oct 13 07:15 public
-rwxrwxrwx 1 root root     66 Oct 13 07:15 readme.txt
drwxrwxrwx 1 root root      0 Oct 13 07:15 resources
drwxrwxrwx 1 root root   4096 Oct 13 07:15 routes
-rwxrwxrwx 1 root root    563 Oct 13 07:15 server.php
drwxrwxrwx 1 root root   4096 Oct 13 07:15 storage
drwxrwxrwx 1 root root      0 Oct 13 07:15 tests
drwxrwxrwx 1 root root   8192 Nov  1 13:05 vendor
-rwxrwxrwx 1 root root   1439 Oct 13 07:15 webpack.mix.js
-rwxrwxrwx 1 root root 261143 Oct 13 07:15 yarn.lock
root@a4aa907373f5:/var/www/html# echo $USER

root@a4aa907373f5:/var/www/html#  uname -a
Linux a4aa907373f5 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 GNU/Linux

Peut-il être émis de toute façon?

BLOC MODIFIÉ # 4

J'ai refait ce docker, j'ai défini des noms de conteneurs par défaut (je suppose que cela soulève une certaine confusion) et j'ai mis image: composer: 1.8 dernière version Donc dans mon docker-compose.yml:

version: '3.1'

services:

    web:

        build:
            context: ./web
            dockerfile: Dockerfile.yml

        environment:
            - Apache_RUN_USER=#1000
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}

    db:
        image: mysql:5.6.41
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql

    adminer:
        image: adminer
        restart: always
        ports:
            - 8082:8080
        links:
            - db

    composer:
        image: composer:1.8
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

et dans web/Dockerfile.yml:

FROM php:7.2-Apache

RUN apt-get update -y && apt-get install -y libpng-dev nano

RUN docker-php-ext-install \
    pdo_mysql \
    && a2enmod \
    rewrite

Mais de toute façon, après la reconstruction du projet et la connexion à l'administrateur avec http://127.0.0.1:8082 url, j'ai eu une erreur:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again

PS: J'ai d'autres laravel 5.0/php: 5.6/image: composer: 1.6/mcrypt projet de docker installé sur le même serveur local de mon ordinateur portable, ce qui fonctionne bien pour moi et je peux entrer dans adminer et peut se connecter à db depuis cette application. Ce projet de docker contient des fichiers:

docker-compose.yml:

version: '3.1'

services:

    web:
        build:
            context: ./web
            dockerfile: Dockerfile.yml

        environment:
            - Apache_RUN_USER=#1000
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        ports:
            - 8085:80
        working_dir: ${APP_PTH_CONTAINER}


    db:
        image: mysql:5.5.62
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql


    adminer:
        image: adminer
        restart: always
        ports:
            - 8086:8080
        links:
            - db


    composer:
        image: composer:1.6
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

et Dockerfile.yml:

FROM php:5.6-Apache

RUN apt-get update -y && apt-get install -y libpng-dev   nano  libmcrypt-dev

RUN docker-php-ext-install \
    pdo_mysql \
    mcrypt \
    && a2enmod \
    rewrite

Ce problème est-il lié à une fonctionnalité spécifique de php 7.2 (comme certains packages manquants?)

BLOC MODIFIÉ # 5: avec défini:

phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 8082:8080
    environment:
      PMA_Host: db
      MYSQL_ROOT_PASSWORD: 1

En cours d'exécution http://127.0.0.1:8082/ J'ai une erreur dans le navigateur:

This site can’t be reached The webpage at http://127.0.0.1:8082/ might be temporarily down or it may have moved permanently to a new web address.
ERR_SOCKET_NOT_CONNECTED

En essayant l'URL de l'application http://127.0.0.1:8081/public/ J'ai eu une erreur:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 

BLOC MODIFIÉ # 6: J'ai refait avec phpmyadmin dans docker-compose.yml:

version: '3.1'

services:

#  docker run -p 8089:8080 -e ADMINER_DEFAULT_SERVER=db adminer
    web:

        # env_file:
        #     - ./mysql.env

        build:
            context: ./web
            dockerfile: Dockerfile.yml

        environment:
            - Apache_RUN_USER=#1000
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}


    db:
        image: mysql:5.6.41
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql


    phpmyadmin:
        depends_on:
          - db
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - 8082:80
        environment:
          PMA_Host: db
          MYSQL_ROOT_PASSWORD: 1

    composer:
        image: composer:1.8
        volumes:
            - ${APP_PATH_Host}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install --ignore-platform-reqs

mais en essayant de se connecter à phpMyAdmin à

http://127.0.0.1:8082

J'ai la même erreur: https://imgur.com/a/cGeudI6

J'ai aussi des ports:

$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                          PORTS                            NAMES
471de34926b9        phpmyadmin/phpmyadmin    "/run.sh supervisord…"   41 minutes ago      Up 41 minutes                   9000/tcp, 0.0.0.0:8082->80/tcp   votes_docker_phpmyadmin_1
226fcdbeeb25        mysql:5.6.41             "docker-entrypoint.s…"   41 minutes ago      Restarting (1) 49 seconds ago                                    votes_docker_db_1
1cb1efb10561        votes_docker_web         "docker-php-entrypoi…"   41 minutes ago      Up 41 minutes                   0.0.0.0:8081->80/tcp             votes_docker_web_1
d6718cd16256        adminer                  "entrypoint.sh docke…"   13 hours ago        Up About an hour                0.0.0.0:8088->8080/tcp           ads_docker_adminer_1
1928a54e1d66        mysql:5.5.62             "docker-entrypoint.s…"   13 hours ago        Up About an hour                3306/tcp                         ads_docker_db_1
e43b2a1e9cc7        adminer                  "entrypoint.sh docke…"   6 days ago          Up About an hour                0.0.0.0:8086->8080/tcp           youtubeapi_demo_adminer_1
47a034fca5a2        mysql:5.5.62             "docker-entrypoint.s…"   6 days ago          Up About an hour                3306/tcp                         youtubeapi_demo_db_1
3dcc1a4ce8f0        adminer                  "entrypoint.sh docke…"   6 weeks ago         Up About an hour                0.0.0.0:8083->8080/tcp           lprods_adminer_container
933d9fffaf76        postgres:9.6.10-Alpine   "docker-entrypoint.s…"   6 weeks ago         Up About an hour                0.0.0.0:5433->5432/tcp           lprods_db_container

BLOC MODIFIÉ # 7 Je ne sais pas quelles informations de débogage puis-je fournir, mais il semble que la journalisation comporte un avertissement. Sont-ils critiques? Quelles informations de débogage additives puis-je fournir?

serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker-compose up -d --build              
Creating network "votes_docker_default" with the default driver 
Building web 
Step 1/3 : FROM php:7.2-Apache 
 ---> cf1a377ba77f 
Step 2/3 : RUN apt-get update -y && apt-get install -y libpng-dev nano 
 ---> Using cache 
 ---> 2c4bce73e8cc 
Step 3/3 : RUN docker-php-ext-install     pdo_mysql     && a2enmod     rewrite 
 ---> Using cache 
 ---> 241c9bf59ac0 
Successfully built 241c9bf59ac0 
Successfully tagged votes_docker_web:latest 
Creating votes_docker_composer_1   ... done 
Creating votes_docker_web_1        ... done 
Creating votes_docker_db_1       ... done 
Creating votes_docker_phpmyadmin_1 ... done 
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ clear 
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker logs --tail=20  votes_docker_web_1 
AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.0.4. Set the 'ServerName' directive globally to suppress this message 
AH00558: Apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.0.4. Set the 'ServerName' directive globally to suppress this message 
[Wed Dec 26 12:26:34.113194 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.11 configured -- resuming normal operations 
[Wed Dec 26 12:26:34.113247 2018] [core:notice] [pid 1] AH00094: Command line: 'Apache2 -D FOREGROUND' 
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker logs --tail=20  votes_docker_db_1 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_CMPMEM' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_CMP_RESET' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_CMP' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_LOCK_WAITS' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_LOCKS' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'INNODB_TRX' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'BLACKHOLE' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'ARCHIVE' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'MRG_MYISAM' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'MyISAM' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'MEMORY' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'CSV' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'sha256_password' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'mysql_old_password' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'mysql_native_password' 
2018-12-26 12:26:43 1 [Note] Shutting down plugin 'binlog' 
2018-12-26 12:26:43 1 [Note] mysqld: Shutdown complete 

serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker logs --tail=20  votes_docker_composer_1    
> @php artisan package:discover 
Discovered Package: aloha/twilio 
Discovered Package: barryvdh/laravel-debugbar 
Discovered Package: beyondcode/laravel-dump-server 
Discovered Package: cviebrock/eloquent-sluggable 
Discovered Package: davejamesmiller/laravel-breadcrumbs 
Discovered Package: fideloper/proxy 
Discovered Package: intervention/image 
Discovered Package: itsgoingd/clockwork 
Discovered Package: jrean/laravel-user-verification 
Discovered Package: laravel/tinker 
Discovered Package: laravelcollective/html 
Discovered Package: mews/captcha 
Discovered Package: nesbot/carbon 
Discovered Package: nunomaduro/collision 
Discovered Package: proengsoft/laravel-jsvalidation 
Discovered Package: rap2hpoutre/laravel-log-viewer 
Discovered Package: themsaid/laravel-mail-preview 
Discovered Package: yajra/laravel-datatables-Oracle 
Package manifest generated successfully. 
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker logs --tail=20  votes_docker_phpmyadmin_1 
phpMyAdmin not found in /var/www/html - copying now... 
Complete! phpMyAdmin has been successfully copied to /var/www/html 
/usr/lib/python2.7/site-packages/supervisor/options.py:461: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); 
you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 
  'Supervisord is running as root and it is searching ' 
2018-12-26 12:26:35,973 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to av
oid this message. 
2018-12-26 12:26:35,973 INFO Included extra file "/etc/supervisor.d/nginx.ini" during parsing 
2018-12-26 12:26:35,973 INFO Included extra file "/etc/supervisor.d/php.ini" during parsing 
2018-12-26 12:26:35,984 INFO RPC interface 'supervisor' initialized 
2018-12-26 12:26:35,984 CRIT Server 'unix_http_server' running without any HTTP authentication checking 
2018-12-26 12:26:35,984 INFO supervisord started with pid 1 
2018-12-26 12:26:36,986 INFO spawned: 'php-fpm' with pid 23 
2018-12-26 12:26:36,988 INFO spawned: 'nginx' with pid 24 
[26-Dec-2018 12:26:37] NOTICE: fpm is running, pid 23 
[26-Dec-2018 12:26:37] NOTICE: ready to handle connections 
2018-12-26 12:26:38,094 INFO success: php-fpm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 
2018-12-26 12:26:38,095 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Qu'est-ce qui ne va pas ?

Merci!

12
user2054381

Essayez avec phpMyAdmin :)

version: '3.2'
services:
    db:
        image: mysql:5.7

        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: myUserPass
          MYSQL_DATABASE: mydb
          MYSQL_USER: myUser
          MYSQL_PASSWORD: myUser

    phpmyadmin:
        depends_on:
          - db
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - 8088:80
        environment:
          PMA_Host: db
          MYSQL_ROOT_PASSWORD: myUserPass
1
Maxim Shubin

Le problème avec votre configuration est dû à la variable d'environnement DB_PATH_Host. Vous avez tout bien configuré dans votre fichier de composition. mais avant d'exécuter docker-compose, vous êtes censé définir la variable d'environnement DB_PATH_Host. Étant donné que la variable d'environnement n'est pas définie, elle génère une erreur. Voir ceci pour plus de détails sur les variables d'environnement et sa priorité dans Docker.

Donc, ce que vous auriez dû faire, c'est qu'avant de démarrer le conteneur Docker, vous devriez avoir défini la variable d'environnement soit en la définissant dans le fichier de composition, soit en l'exportant dans Shell en tant que variable Shell avant d'exécuter docker-compose ou vous auriez dû utiliser le fichier env ou en utilisant l'instruction ENV dans dockerfile. (Ce sont toutes les façons possibles de définir les variables d'environnement et je les ai toutes répertoriées, la méthode qui vient en premier est prioritaire. reportez-vous à cela pour plus d'informations).

Ainsi, le bon fichier docker-compose.yml doit être le suivant.

version: '3.2'
services:
   db:
        image: mysql:5.6.41
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
            DB_PATH_Host: /tmp/mysql #this is the Host location where mysql data will be stored.
        volumes:
            - ${DB_PATH_Host}:/var/lib/mysql

    phpmyadmin:
        depends_on:
          - db
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - 8082:80
        environment:
          PMA_Host: db
          MYSQL_ROOT_PASSWORD: 1

Passant maintenant au point suivant, je constate que vos discussions vous ont permis de conclure que la suppression des volumes du conteneur db a résolu votre problème. Mais en fait non. Comment?

Permettez-moi d'abord d'expliquer pourquoi le volume est utilisé ici. Les données générées par mon mysql doivent être stockées quelque part. Docker par défaut exécute les conteneurs en mode non persistant, ce qui signifie que toutes les données générées par le conatiner docker en cours d'exécution seront effacées lorsque ce conteneur est abattu/tué. Donc, pour conserver (stocker/sauvegarder) les données, nous utilisons des volumes. Il existe différents types de volumes utilisés dans Docker. Je vous encourage à lire la documentation de stockage de docker pour plus de détails . Le type de volume utilisé ici est un montage de liaison, c'est-à-dire que vous liez un répertoire Host à un répertoire Docker et que Docker stocke toutes les données directement dans la machine Host, de sorte que même si le conteneur Docker est abaissé, les données sont toujours préservées.

Par conséquent, si vous n'utilisez pas de volumes dans mysql, toutes les modifications de la base de données, indépendamment de ce que vous faites, seront perdues à chaque arrêt du conteneur.

Bonus Poits:

  1. Par défaut, le conteneur MySQL n'autorise pas les connexions à distance. Donc, si vous voulez accéder à mysql depuis n'importe où ailleurs que phpmyadmin. Vous devez autoriser les connexions à distance.
  2. Puisque nous conservons les données ici, le mot de passe root ne sera défini que la première fois à chaque démarrage du conteneur mysqll. À partir de la prochaine fois, la variable d'environnement du mot de passe root sera ignorée.
  3. Si vous vous connectez aux conteneurs Docker à l'aide de Docker Exec, vous pouvez voir que vous serez root. En effet, chaque fois que vous créez un conteneur Docker avec Dockerfile à l'aide de docker build ou docker-compose build sauf si vous spécifiez une instruction sur Dockerfile pour créer et utiliser un nouvel utilisateur docker exécutera tout en tant qu'utilisateur root.
  4. Maintenant, chaque fois que vous exécutez le fichier de composition ci-dessus. Vous pouvez voir que la propriété de l'emplacement de données mysql sera modifiée. C'est parce que chaque fois que vous montez un répertoire Host sur docker, Docker modifie l'autorisation de fichier en fonction de l'utilisateur et du groupe selon la définition Dockerile de ce conteneur. Ici mysql a défini un utilisateur et un groupe appelé mysql et le uid et gid est 999 . par conséquent,/tmp/mysql aura la propriété 999: 999. Si ces identifiants sont mappés avec un autre compte d'utilisateur de votre système, vous verrez ces noms au lieu des identifiants chaque fois que vous effectuez ls -al sur la machine hôte. Si les identifiants ne sont pas mappés, vous verrez directement les identifiants.
  5. J'ai utilisé /tmp/mysql comme répertoire de données mysql pour un exemple. Pleae n'utilise pas la même chose car les données dans/tmp seront supprimées à chaque redémarrage du système.
2
Mani

Vous pouvez le voir dans https://hub.docker.com/_/adminer/

Exemple

version: '3.1'

services:

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  db:
    image: mysql:5.6
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
1