programing

php_network_getaddresses: 도커의 관리자에서 getaddrinfo 오류가 발생했습니다.

powerit 2023. 11. 4. 13:21
반응형

php_network_getaddresses: 도커의 관리자에서 getaddrinfo 오류가 발생했습니다.

laravel 5/mysql 앱으로 도커 컨테이너의 관리자 접근에 문제가 있습니다.오류가 발생했습니다.

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

내 도커 작곡.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

앱과 db 컨테이너의 포트가 다릅니다.

여기 https://hub.docker.com/_/adminer/ 에서 발견한 내용:

외부 서버와의 사용 ADMINER_DEFAULT_SERVER 환경 변수를 사용하여 기본 호스트를 지정할 수 있습니다.외부 서버 또는 기본 db가 아닌 다른 이름의 도커 컨테이너에 연결하는 경우 유용합니다.

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

앱 콘솔에서 명령 실행

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

https://i.stack.imgur.com/4yPTe.jpg 관리자에게 로그인을 시도하는 동일한 오류가 발생했기 때문에 apps port에서 사용되지 않았고 이 명령은 어쨌든 성공적이지 않았습니다.

어느 쪽이 옳은 길입니까?

수정된 블록 #2:

내 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

앱을 다시 만들었지만 관리자 https://i.stack.imgur.com/PdQqE.jpg 에 로그인하지 못했습니다.

사용되지 않는 다른 8089 포트를 가리키며 OS 콘솔에서 실행합니다.

$ 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

그러나 다시 8089 포트에 admin으로 로그인하는 동안 오류가 발생했습니다. 그러나 오류 메시지가 다릅니다.

https://i.stack.imgur.com/pEuHx.jpg

뭐가 잘못됐어요?

수정된 블록 #3:

컨테이너를 재구축한 후 상자에 입력하면 콘솔 출력에 "root"이 표시되므로 그렇다고 생각합니다.

$ 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

어쨌든 문제가 될 수 있습니까?

수정된 블록 #4

나는 이 도커를 다시 만들었고, 컨테이너의 기본 이름을 설정했고(나는 그것이 약간의 혼란을 야기한다고 생각한다), 이미지를 설정했습니다: composer:1.8 최신 버전 So in my 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

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

하지만 어쨌든 프로젝트를 재구성하고 http://127.0.0.1:8082 url로 관리자에게 연결한 후 오류가 발생했습니다.

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

추신: 다른 laravel 5.0/php:5.6 / 이미지: composer:1.6 / mcrypt installed docker project가 제 노트북의 동일한 로컬 서버에 있는데, 이 프로젝트는 저에게 잘 작동하고 관리자를 입력하고 이 앱에서 db에 로그인할 수 있습니다.이 도커 프로젝트의 파일은 다음과 같습니다.

도커- 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

그리고 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

이 문제는 일부 php 7.2 특정 기능입니까(일부 패키지가 누락된 것과 같이)?

수정된 블록 #5: 정의된 경우:

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

http://127.0.0.1:8082 실행 중/ 브라우저에서 오류가 발생했습니다:

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

appurl http://127.0.0.1:8081/public/ 오류가 발생했습니다:

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

MODIED BLOCK #6: 나는 docker-compose.yml에서 phpmyadmin으로 리메이크했습니다:

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

phpMyAdmin 에 로그인하려고 합니다.

http://127.0.0.1:8082

같은 오류가 발생했습니다. https://i.stack.imgur.com/YCYUt.jpg

포트도 있습니다.

$ 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

MODIED BLOCK # 7 어떤 디버깅 정보를 제공할 수 있을지 모르겠지만, 로깅에 약간의 경고가 있는 것 같습니다.그들이 비판적입니까?어떤 추가 디버깅 정보를 제공할 수 있습니까?

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)

뭐가 잘못됐어요?

감사합니다!

같은 문제가 있었는데 서버 주소에 대한 관리자 응용 프로그램의 기본값이 'db'이며 MySQL 컨테이너의 서비스 이름과 일치하지 않습니다.

enter image description here

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

https://hub.docker.com/_/adminer/ 에서 확인하실 수 있습니다.

version: '3.1'

services:

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

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

설정의 문제는 환경 변수 때문입니다.DB_PATH_HOST. composite 파일에 모든 것을 잘 설정했습니다. 그러나 docker-composite를 실행하기 전에 환경 변수를 정의해야 합니다.DB_PATH_HOST. 환경 변수가 정의되지 않았으므로 오류가 발생합니다.환경 변수와 도커의 우선 순위에 대한 자세한 내용은 이 항목을 참조하십시오.

따라서 도커 컨테이너를 시작하기 전에 환경 변수를 composite 파일로 정의하거나 셸 변수로 셸로 내보냄으로써 환경 변수를 정의하거나 환경 변수를 사용해야 합니다. 또는 도커 파일에서 ENV 명령을 사용해야 합니다.환경 변수를 정의하는 데 가능한 모든 방법을 사용하며, 우선 순위를 매기는 방법을 모두 나열했습니다.자세한 내용이를 참조하십시오).

따라서 적절한 docker-compose.yml 파일은 다음과 같습니다.

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

이제 다음 사항으로 넘어가면, 귀하의 논의를 통해 DB 컨테이너에서 볼륨을 제거하는 것이 문제를 해결했다는 결론을 내렸다는 것을 알 수 있습니다.하지만 사실은 아니에요 어떻게요?

먼저 볼륨이 여기서 사용되는 이유를 설명하겠습니다.내 mysql을 생성한 데이터는 어딘가에 저장되어야 합니다.도커는 기본적으로 컨테이너를 비영구 모드로 실행합니다. 즉, 실행 중인 도커 컨테이너를 다운/킬할 때 실행 중인 도커 컨테이너에서 생성된 모든 데이터가 지워집니다.따라서 데이터를 지속적으로 저장(저장/저장)하기 위해 볼륨을 사용합니다.도커에 사용되는 볼륨에는 여러 가지 유형이 있습니다.자세한 내용은 스토리지 도커 설명서를 읽어보시기 바랍니다.여기서 사용되는 볼륨의 유형은 바인딩 마운트로, 즉 호스트 디렉토리를 도커 디렉토리에 바인딩하고 도커는 모든 데이터를 호스트 시스템에 직접 저장하여 도커 컨테이너를 다운받은 경우에도 데이터가 보존됩니다.

따라서 mysql에서 볼륨을 사용하지 않으면 컨테이너가 정지될 때마다 작업에 관계없이 모든 db 변경 사항이 손실됩니다.

보너스 점수:

  1. 기본적으로 MySQL 컨테이너는 원격 연결을 허용하지 않습니다.그래서 만약 당신이 phpmyadmin이 아닌 다른 곳에서 mysql에 접속하고 싶다면요.원격 연결을 허용해야 합니다.
  2. 여기서 데이터를 보존하기 때문에 루트 암호는 mysqll 컨테이너를 시작할 때마다 처음으로 설정됩니다.다음부터는 root password 환경 변수가 무시됩니다.
  3. 도커 실행을 사용하여 도커 컨테이너에 로그인하면 대부분 루트가 되는 것을 볼 수 있습니다.왜냐하면 도커 파일로 도커 컨테이너를 만들 때마다 다음 중 하나를 사용하기 때문입니다.docker build아니면docker-compose build에 대한 지시를 명시하지 않는 한Dockerfile새 사용자 도커를 생성하고 사용하면 루트 사용자로 모든 것이 실행됩니다.
  4. 이제 위의 작성 파일을 실행할 때마다 작성합니다.mysql 데이터 위치의 소유권이 변경되는 것을 확인할 수 있습니다.호스트 디렉토리를 도커에 마운트할 때마다 해당 컨테이너의 도커릴 정의에 따라 사용자 및 그룹에 따라 파일 권한이 변경되기 때문입니다.여기서 mysql은 사용자와 그룹을 정의했으며 uid와 gid는 999입니다.따라서 /tmp/mysql는 999:999를 소유권으로 가지게 됩니다.이러한 ID가 시스템의 다른 사용자 계정과 매핑되어 있으면 호스트 시스템에서 ds-al을 수행할 때마다 ID 대신 해당 이름이 표시됩니다.ID가 매핑되지 않은 경우 ID를 직접 볼 수 있습니다.
  5. 예를 들어 /tmp/mysql을 mysql 데이터 디렉토리로 사용한 적이 있습니다.시스템을 다시 시작할 때마다 /tmp의 데이터가 제거되므로 동일하게 사용하지 마십시오.

질문에 대해서는 이미 답변을 마쳤지만, 참고를 위해 여기 비슷한 문제에 제 해결책을 추가했습니다.

나의 도커 구성 phpmyadmin/adminer 서비스 블록에 'links' 파라미터를 추가하면 위의 예시에서도 사용된 것처럼 데이터베이스 블록의 서비스 이름이 실제로 db라는 가정 하에 해결되었습니다.이 링크를 사용하면 phpmyadmin 로그인 인터페이스에서 'db'를 호스트로 사용할 수 있고 연결됩니다.

links:
  - db:db

컨테이너 이름을 db for mysql image로 변경하여 나를 변화시켰습니다. https://hub.docker.com/_/adminer/ 에서 확인하실 수 있습니다.

서비스: db: 이미지: mysql: 5.6

언급URL : https://stackoverflow.com/questions/53078135/php-network-getaddresses-getaddrinfo-failed-error-in-dockers-adminer

반응형