Mysql php_network_getaddresses:getaddrinfo在Docker中失败错误';s管理员
我在使用laravel 5/mysql应用程序访问docker容器中的adminer时遇到问题。我得到一个错误:Mysql php_network_getaddresses:getaddrinfo在Docker中失败错误';s管理员,mysql,docker,dns,adminer,Mysql,Docker,Dns,Adminer,我在使用laravel 5/mysql应用程序访问docker容器中的adminer时遇到问题。我得到一个错误: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolu
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
My 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
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
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
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
我为应用程序和数据库容器提供了不同的端口
我发现:
使用外部服务器您可以使用
ADMINER\u默认\u服务器环境变量。这是有用的,如果你是
连接到外部服务器或名为某物的docker容器
而不是默认的数据库
在我的应用程序的控制台中,我运行命令
$ docker run -p 8089:8080 -e ADMINER_DEFAULT_SERVER=votes_db adminer
在我的应用程序端口中使用了unused,并且该命令无论如何都没有成功,因为我在尝试登录到adminer时遇到了相同的错误
哪条路对
修改块#2:
在my 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
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
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
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
我重建了应用程序,但未能登录管理员:
我在操作系统的控制台中运行,指向其他未使用的8089端口:
$ 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端口时出错,但错误消息不同:
怎么了
修改块#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
我重新制作了这个docker,设置了容器的默认名称(我想这会引起一些混乱),并设置了image:composer:1.8最新版本
因此,在我的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
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
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
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
在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
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
但无论如何,在重建项目并使用
我得到的url错误:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again
附言:
我在同一本地服务器上安装了其他Laravel5.0/php:5.6/image:composer:1.6/mcrypt docker项目
我的笔记本电脑的服务器,这对我来说工作正常,我可以进入管理员,并可以从这个应用程序登录到数据库。
此docker项目包含以下文件:
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
和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
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
这个问题是不是PHP7.2特有的特性(比如缺少一些软件包?)
修改块#5:
定义如下:
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8082:8080
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: 1
在浏览器中运行时出现错误:
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
尝试应用程序url时出现错误:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
修改块#6:
我在docker-compose.yml中使用phpmyadmin重新制作:
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
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
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
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
我也犯了同样的错误:
此外,我还有以下端口:
$ 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
修改块#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)
怎么了
谢谢 你可以在
范例
version: '3.1'
services:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
db:
image: mysql:5.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
尝试使用phpMyAdmin:)
设置出现问题的原因是环境变量
DB\u PATH\u HOST
。您已经在撰写文件中设置好了所有内容。但是在运行docker compose之前,应该定义环境变量DB\u PATH\u HOST
。由于未定义环境变量,因此会引发错误
因此,您应该做的是,在启动docker容器之前,您应该在compose文件中定义环境变量,或者在运行docker compose之前在shell中将其导出为shell变量,或者应该使用env file或在dockerfile中使用env instrction来定义环境变量。(这些都是定义环境变量的可能方法,我已经列出了所有这些方法,优先考虑的方法。)
因此,正确的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生成的数据应该存储在某个地方。默认情况下,Docker以非持久模式运行容器,这意味着运行的Docker conatiner生成的所有数据将在容器关闭/终止时被擦除。因此,为了持久化(存储/保存)数据,我们使用卷。docker中使用了不同类型的卷。这里使用的卷类型是绑定装载,即,将主机目录绑定到docker目录,docker将所有数据直接存储在主机中,这样即使docker容器关闭,数据仍然保留
因此,如果您不在mysql中使用卷,那么无论您做什么,只要停止容器,所有的db更改都将丢失
奖励要点:
docker build
或docker compose build
使用docker文件创建docker容器时,除非您在Dockerfile
上指定了创建和使用新用户的指令,否则docker将以root用户身份运行所有内容