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 컨테이너의 서비스 이름과 일치하지 않습니다.
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 변경 사항이 손실됩니다.
보너스 점수:
- 기본적으로 MySQL 컨테이너는 원격 연결을 허용하지 않습니다.그래서 만약 당신이 phpmyadmin이 아닌 다른 곳에서 mysql에 접속하고 싶다면요.원격 연결을 허용해야 합니다.
- 여기서 데이터를 보존하기 때문에 루트 암호는 mysqll 컨테이너를 시작할 때마다 처음으로 설정됩니다.다음부터는 root password 환경 변수가 무시됩니다.
- 도커 실행을 사용하여 도커 컨테이너에 로그인하면 대부분 루트가 되는 것을 볼 수 있습니다.왜냐하면 도커 파일로 도커 컨테이너를 만들 때마다 다음 중 하나를 사용하기 때문입니다.
docker build
아니면docker-compose build
에 대한 지시를 명시하지 않는 한Dockerfile
새 사용자 도커를 생성하고 사용하면 루트 사용자로 모든 것이 실행됩니다. - 이제 위의 작성 파일을 실행할 때마다 작성합니다.mysql 데이터 위치의 소유권이 변경되는 것을 확인할 수 있습니다.호스트 디렉토리를 도커에 마운트할 때마다 해당 컨테이너의 도커릴 정의에 따라 사용자 및 그룹에 따라 파일 권한이 변경되기 때문입니다.여기서 mysql은 사용자와 그룹을 정의했으며 uid와 gid는 999입니다.따라서 /tmp/mysql는 999:999를 소유권으로 가지게 됩니다.이러한 ID가 시스템의 다른 사용자 계정과 매핑되어 있으면 호스트 시스템에서 ds-al을 수행할 때마다 ID 대신 해당 이름이 표시됩니다.ID가 매핑되지 않은 경우 ID를 직접 볼 수 있습니다.
- 예를 들어 /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
'programing' 카테고리의 다른 글
pip을 사용할 수 없기 때문에 pyvenv가 작동하지 않습니다. (0) | 2023.11.04 |
---|---|
사용자 지정 파이썬 목록 정렬 (0) | 2023.11.04 |
숫자가 아닌 텍스트를 보여주기 위해 집계 없이 엑셀로 피벗? (0) | 2023.11.04 |
JavaScript clearTimeout이 작동하지 않습니다. (0) | 2023.11.04 |
각도를 분할하는 방법JS를 작은 모듈에 적용하고 라우팅을 올바르게 처리합니까? (0) | 2023.11.04 |