source

도커 컨테이너 내에서 호스팅되는 phpmyadmin을 통해 MariaDB 데이터베이스에 액세스하려고 합니다.

manysource 2023. 7. 24. 22:37

도커 컨테이너 내에서 호스팅되는 phpmyadmin을 통해 MariaDB 데이터베이스에 액세스하려고 합니다.

다음을 사용하여 기본 LAMP 스택을 설정하려고 합니다.docker-compose하지만 연결할 수 없습니다.mariadb데이터베이스:사용phpmyadmin컨테이너가 실행될 때.

문제를 해결하기 위해 나는 다시 벗었습니다.docker-compose.yaml파일 대상:

version: '3.2'                       

services:
   db:
      image: mariadb
      container_name: appsDB
      restart: always
      ports:
       - '6603:3306'
      environment:
        MYSQL_ROOT_PASSWORD: secret

   app:
      depends_on:
       - db
      image: phpmyadmin/phpmyadmin
      container_name: phpmyadmin
      restart: always
      ports:
       - '8080:80'
      environment:
        PMA_HOST: db

컨테이너를 실행할 때 다음으로 이동할 수 있습니다.phpmyadmin페이지 하지만 내가 들어갈 때root/secret사용자 이름/암호 오류가 발생함:

 Cannot log in to the MySQL server
 mysqli::real_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known

컴퓨터에 문제가 없는지 확인하기 위해 또한 실행했습니다.docker-compose up데이터베이스 이미지가 다음으로 변경된 경우mysql다른 모든 세부 사항을 동일하게 유지합니다.그때는 아무 문제가 없었습니다: php myadmin은 잘 작동했고 저는 동일한 것으로 정상적으로 로그인할 수 있었습니다.root/secret이전 이미지에 사용된 자격 증명입니다.

왜 그런지 누가 조언해 줄 수 있나요?mariadb행동하는 이유는 이것이고 도커 컨테이너에서 phpmyadmin을 통해 액세스할 수 있는 방법이 있습니까?

편집

용기 사이의 연결 상태를 확인하라는 조언에 따라 다음과 같이 보입니다.mariadb컨테이너 데이터베이스를 시작하지 못했습니다.도커 로그의 결과는 다음과 같습니다.

2020-07-01  9:32:22 0 [Warning] 'default-authentication-plugin' is MySQL 5.6 / 5.7 compatible option. To be implemented in later versions.
2020-07-01  9:32:22 0 [Note] mysqld (mysqld 10.4.8-MariaDB-1:10.4.8+maria~bionic) starting as process 1 ...
2020-07-01  9:32:22 0 [Note] InnoDB: Using Linux native AIO
2020-07-01  9:32:22 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2020-07-01  9:32:22 0 [Note] InnoDB: Uses event mutexes
2020-07-01  9:32:22 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2020-07-01  9:32:22 0 [Note] InnoDB: Number of pools: 1
2020-07-01  9:32:22 0 [Note] InnoDB: Using SSE2 crc32 instructions
2020-07-01  9:32:22 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2020-07-01  9:32:22 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
2020-07-01  9:32:22 0 [Note] InnoDB: Completed initialization of buffer pool
2020-07-01  9:32:22 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2020-07-01  9:32:22 0 [ERROR] InnoDB: Invalid flags 0x4800 in ./ibdata1
2020-07-01  9:32:22 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
2020-07-01  9:32:23 0 [Note] InnoDB: Starting shutdown...
2020-07-01  9:32:23 0 [ERROR] Plugin 'InnoDB' init function returned error.
2020-07-01  9:32:23 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-07-01  9:32:23 0 [Note] Plugin 'FEEDBACK' is disabled.
2020-07-01  9:32:23 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2020-07-01  9:32:23 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2020-07-01  9:32:23 0 [ERROR] Aborting

도커 내에서 이 문제를 해결하려면 어떻게 해야 하는지 누가 조언해 줄 수 있습니까?

추가 편집

최신 상태를 유지하기 위해 문제 없이 CLI에서 데이터베이스 컨테이너를 시작할 수 있습니다. 데이터베이스 시작 및 연결 준비:

docker run --name mariadbtest -e MYSQL_ROOT_PASSWORD=mypass -d mariadb

이미지/컨테이너의 구식 버전으로 작업하고 계십니까?당신의 docker-compose.yml은 저에게 잘 작동합니다(제 Docker 버전은 19.03.8이며, 그것이 중요하다고 생각하지 않습니다).

먼저 전체 스택을 재현하도록 강제로 시도해 보겠습니다.docker-compose up --force-recreate나는 당신이 이 파일을 다음과 같이 언급하는 것을 주목했습니다.docker-compose.yaml하지만 올바른 기본 확장자는 .yml이어야 합니다. 만약 당신이 .yml 파일로 그것을 만든 적이 있다면 (또는 도커 합성을 위해 직접 파일 이름을 지정함으로써) 도커가 새 파일을 자동으로 재구축하지 못할 것이라고 생각할 수 있습니다. 따라서 파일 이름도 다시 확인하십시오.

만약 그것이 작동하지 않는다면, 저는 phpMyAdmin 컨테이너의 셸에 들어가서 당신이 직접 연결할 수 있는지 확인하기 위해 몇 가지 네트워킹 명령을 시도하는 것을 제안합니다. 예를 들어, 설치합니다.mariadb-client패키지 및 시도mysql -u root -h db -p.

언급URL : https://stackoverflow.com/questions/62660150/trying-to-access-mariadb-databse-through-phpmyadmin-hosted-within-a-docker-conta