2017-08-01 286 views
0

我正在努力与以下码头设置..一切运行在自己的罚款,但由于某种原因,我的nginx容器无法连接到MySQL之一,我已经其次在这个无数的教程和他们没有为我工作,所以任何的建议是优秀..我的码头工人撰写如下(FPM和nginx的工作完全)..Docker Compose - 无法连接到MySQL从单独的Nginx容器

# web server 
nginx: 
    image: nginx:latest 
    ports: 
    - "80:80" 
    - "443:443" 
    volumes: 
    # app 
    - ./app/src:/usr/share/nginx/html 
    # nginx configs 
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro 
    - ./nginx/conf.d/:/etc/nginx/conf.d/:ro 
    - ./nginx/snippets/:/etc/nginx/snippets/:ro  
    # certificates 
    - ./nginx/letsencrypt/fullchain.pem:/etc/letsencrypt/live/example.com/fullchain.pem:ro 
    - ./nginx/letsencrypt/privkey.pem:/etc/letsencrypt/live/example.com/privkey.pem:ro 
    # logs  
    # - ./logs/nginx-error.log:/var/log/nginx/error.log 
    # - ./logs/nginx-access.log:/var/log/nginx/access.log  
    links: 
    - fpm:__DOCKER_PHP_FPM__ 
    - db 
# php-fpm 
fpm: 
    build: ./php-fpm 
    ports: 
    - "9000" 
    volumes: 
    - ./app/src:/usr/share/nginx/html 
    - ./php-fpm/php-production.ini:/usr/local/etc/php/php.ini:ro 
db: 
    image: mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: "admin" 
    ports: 
    - "3306:3306"  

当我运行码头工人,组成了MySQL的喷出几条有趣的线

db_1  | 2017-08-01T17:53:15.872664Z 0 [Note] Server hostname (bind-address): '*'; port: 3306 
    db_1  | 2017-08-01T17:53:15.872716Z 0 [Note] IPv6 is available. 
    db_1  | 2017-08-01T17:53:15.872723Z 0 [Note] - '::' resolves to '::'; 
    db_1  | 2017-08-01T17:53:15.872736Z 0 [Note] Server socket created on IP: '::'. 
    db_1  | 2017-08-01T17:53:15.911242Z 0 [Note] mysqld: ready for connections. 
    db_1  | Version: '5.7.19' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) 

看起来不是这样接受TCP连接并使用我的wp-config.php数据库文件中的套接字地址也不起作用。

这基本上就是快到了上安装WordPress屏幕:

Warning: mysqli_real_connect(): (HY000/2002): Connection refused in /usr/share/nginx/html/wp-includes/wp-db.php on line 1538 

有趣的是我可以从SequelPro或MySQL工作台连接到数据库没有问题..即时通讯非常新的泊坞窗(和泊坞窗撰写)所以也许我在这里失去了一些东西或一步?

我正在osx上运行docker,如果这很重要的话。

泊坞窗PS输出:

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS          NAMES 
    060ac535e91e  nginx:latest   "nginx -g 'daemon ..." 9 minutes ago  Up 9 minutes  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp dockerlnmpmaster_nginx_1 
    56db5e7bf9c1  mysql     "docker-entrypoint..." 10 minutes ago  Up 9 minutes  0.0.0.0:3306->3306/tcp      dockerlnmpmaster_db_1 
    6b8d6e4bec5f  dockerlnmpmaster_fpm "php-fpm"    10 minutes ago  Up 9 minutes  0.0.0.0:32813->9000/tcp     dockerlnmpmaster_fpm_1 
+0

你是如何从SequelPro或Workbench连接和你在'/ usr/share/nginx/html/wp- includes/wp-db.php'?? – VladoDemcak

+0

它的怪异..我只是连接到127.0.0.1和端口3306 ..但是当我在wordpress中使用这些细节安装它不工作.. – Kravitz

+0

也当我撞到nginx容器和安装curl它无法达到127.0.0.1 :3306要么 – Kravitz

回答

1

最有可能的问题是,当你在你的主机上,而不是一个泊坞窗容器内测试你的MySQL访问。所以如果你使用localhost:3306连接。有用。那是因为你服务的端口映射为3306:3306

但是这个服务不是你的撰写容器内的本地主机。它由服务名称引用。你的情况是db。因此,当你配置你的wordpress时,你需要确保使用db作为数据库名称

+0

足够接近.. db应该用来代替wp-config.php中的主机ip,并且指向db的链接应该从nginx移动到docker-compose的phpfpm部分 – Kravitz

+0

不再需要链接。你从你的docker-compose中移除它 –

相关问题