2015-12-03 28 views
5

Tôi đã tạo một docker-compose.yml nhỏ được sử dụng để hoạt động như một sự quyến rũ để triển khai các phiên bản WordPress nhỏ. Nó trông giống như thế này:docker-compose kết nối mysql wordpress từ chối

wordpress: 
    image: wordpress:latest 
    links: 
    - mysql 
    ports: 
    - "1234:80" 
    environment: 
    WORDPRESS_DB_USER: wordpress 
    WORDPRESS_DB_NAME: wordpress 
    WORDPRESS_DB_PASSWORD: "password" 
    WORDPRESS_DB_HOST: mariadb 
    MYSQL_PORT_3306_TCP: 3306 
    volumes: 
    - /srv/wordpress/:/var/www/html/ 
mysql: 
    image: mariadb:latest 
    mem_limit: 256m 
    container_name: mariadb 
    environment: 
    MYSQL_ROOT_PASSWORD: "password" 
    MYSQL_DATABASE: wordpress 
    MYSQL_USER: wordpress 
    MYSQL_PASSWORD: "password" 
    volumes: 
    - /srv/mariadb:/var/lib/mysql 

Nhưng khi tôi bắt đầu nó bây giờ (có lẽ kể từ Docker cập nhật cho phiên bản 1.9.1 Docker, xây dựng a34a1d5), nó không

wordpress_1 | Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10 
wordpress_1 | 
wordpress_1 | MySQL Connection Error: (2002) Connection refused 

Khi tôi mèo /etc/hosts của wordpress_1 có các mục nhập cho MySQL:

172.17.0.10 mysql 12a564fdbc56 mariadb 

và tôi có thể ping máy chủ MariaDB.

Khi tôi docker-compose up, WordPress được cài đặt và sau vài khởi động lại MariaDB chứa bản in:

Version: '10.0.22-MariaDB-1~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution 

nào schould chỉ ra nó phải chạy, phải không?

Làm cách nào để WordPress có thể kết nối với vùng chứa MariaDB?

+1

cổng mysql của bạn đang khai thác 3306 ngày nào? bạn có biến môi trường: MYSQL_PORT_3306_TCP_PORT không? – Michael

+0

Cảm ơn câu trả lời của bạn. Nó chạy trên 3306, như bạn có thể thấy trong thông điệp staria mariadb bắt đầu (di chuyển sang phải) ... vẫn không có ý tưởng, tại sao việc này không hoạt động nữa – Harry

+0

Đó là bên trong container, tôi hỏi cổng tiếp xúc là gì trên các docker container: docker port Michael

Trả lời

2

Lý do cho hành vi này có thể liên quan đến bản cập nhật kernel và docker gần đây. Tôi đã nhận ra một số sự cố kết nối khác trong các thiết lập docker-compose khác. Vì vậy tôi đã khởi động lại máy chủ (không chỉ dịch vụ docker) và không có bất kỳ vấn đề nào như thế này kể từ đó.

+0

Vâng, khởi động lại docker daemon đã giúp – lisak

+0

Khởi động lại trình nền docker không sửa lỗi này. –

0

Tôi đang sử dụng docker-compose.yml của bạn, có cùng sự cố. Chỉ cần khởi động lại không khắc phục được. Sau gần một giờ nghiên cứu nhật ký, tôi thấy vấn đề là: wordpress dịch vụ bắt đầu kết nối dịch vụ mysql trước khi bắt đầu hoàn toàn. Chỉ cần thêm depends_on sẽ không giúp ích gì. Docker Compose wait for container X before starting Y

công việc xung quanh có thể bắt đầu máy chủ db trước khi lên. Khi nó đã khởi động hoàn toàn, hãy chạy docker-compose up. Hoặc chỉ sử dụng dịch vụ bên ngoài.

+0

bạn có thể sử dụng 'depends_on: database' trong dịch vụ wordpress, nhưng nó vẫn không hoạt động đối với tôi –

0

Để khắc phục vấn đề này điều đầu tiên cần làm là:

Thêm mã sau đây để & container cơ sở dữ liệu wordpress (trong file Docker-soạn):

restart: unless-stopped 

này sẽ đảm bảo bạn Cơ sở dữ liệu được bắt đầu và intialized trước khi container wordpress cố gắng để kết nối với nó. Sau đó khởi động lại động cơ Docker

sudo restart docker 

hoặc (đối với ubuntu 15+)

sudo service docker restart 

Đây là cấu hình đầy đủ mà làm việc cho tôi, để thiết lập wordpress với MariaDB:

version: '2' 

services: 
    wordpress: 
    image: wordpress:latest 
    links: 
     - database:mariadb 
    environment: 
     - WORDPRESS_DB_USER=wordpress 
     - WORDPRESS_DB_NAME=mydbname 
     - WORDPRESS_TABLE_PREFIX=ab_ 
     - WORDPRESS_DB_PASSWORD=password 
     - WORDPRESS_DB_HOST=mariadb 
     - MYSQL_PORT_3306_TCP=3306 
    restart: unless-stopped 
    ports: 
     - "test.dev:80:80" 
    working_dir: /var/www/html 
    volumes: 
    - ./wordpress/:/var/www/html/ 
    database: 
    image: mariadb:latest 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_DATABASE=mydbname 
    - MYSQL_USER=wordpress 
    - MYSQL_PASSWORD=password 
    restart: unless-stopped 
    ports: 
    - "3306:3306" 
0

tôi cũng có rắc rối ở đây. Tôi đã sử dụng docker-compose để thiết lập nhiều trang web wordpress trên một máy chủ riêng ảo (vi), bao gồm phpmyadminjwilder/nginx-proxy làm bộ điều khiển.

$ docker logs XXXX sẽ giúp chỉ ra các khu vực quan tâm.Trong trường hợp của tôi, cơ sở dữ liệu MariaDB sẽ tiếp tục khởi động lại mọi lúc.

Nó chỉ ra rằng tất cả những thứ đó sẽ không phù hợp với một dịch vụ CPU đơn 512M. Tôi không bao giờ nhận được thông báo lỗi nói trực tiếp với tôi rằng kích thước là một vấn đề, nhưng sau khi thêm mọi thứ, tôi nhận ra rằng khi tất cả các cơ sở dữ liệu khởi động, tôi đã hết bộ nhớ. Nâng cấp lên 1Gb, 1 dịch vụ CPU hoạt động tốt.

Các vấn đề liên quan