2016-07-16 31 views
7

Đây là tôi Docker-compose.ymlWordpress trên Docker-soạn không chạy

version: '2' 
services: 
    wordpress: 
    image: wordpress 
    ports: 
     - "8080:80" 
    environment: 
     WORDPRESS_DB_PASSWORD: example 
    db: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: example 

các dịch vụ chạy bình thường, nhưng, một vài giây sau, điểm dừng chân chứa wordpress.

Đây là Docker bản ghi wordpress container của tôi:

WordPress not found in /var/www/html - copying now... 
Complete! WordPress has been successfully copied to /var/www/html 

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 


MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known 

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10 

Tại sao điều này xảy ra?

+0

bạn nên hiển thị các bản ghi của container wordpress sử dụng 'log Docker ' –

+0

@ThanhNguyenVan tôi sửa câu hỏi của tôi, đó là bản ghi Docker wordpress chứa – alvarezsh

+0

những gì 'chủ 'tham số nào bạn sử dụng cho kết nối mysql trong mã nguồn wordpress? –

Trả lời

0

Bạn có đang thiết lập máy chủ lưu trữ DB (và các thuộc tính MySql cần thiết khác), trong dịch vụ wordpress soạn thảo tệp của bạn (không phải mật khẩu, được hiển thị trong bài đăng của bạn) không? ví dụ:

environment: 
    WORDPRESS_DB_PASSWORD: example 
    WORDPRESS_DB_HOST: db 
    WORDPRESS_DB_USER: {xxx} 
    WORDPRESS_DB_NAME: {xxx} 
    WORDPRESS_TABLE_PREFIX: {xxx} 

Cụ thể là giá trị "máy chủ", trong cài đặt của bạn phải là db. Bạn không cần phải làm bất cứ liên kết, mặc dù nó sẽ là một ý tưởng tốt để thêm

depends_on: 
    - db 

đến khối dịch vụ wordpress của bạn mà sẽ thiết lập thứ tự phụ thuộc để bắt đầu container db trước khi chứa wordpress của bạn. (Thuộc tính links sẽ làm như vậy, nhưng cố gắng để giữ cho mọi thứ đơn giản.)

Lưu ý:

Theo mặc định Soạn thiết lập một mạng duy nhất cho ứng dụng của bạn. Mỗi vùng chứa cho một dịch vụ tham gia mạng mặc định và cả hai có thể truy cập bởi các vùng chứa khác trên mạng đó và có thể phát hiện bởi chúng tại tên máy chủ giống với tên vùng chứa.

Liên kết cho phép bạn xác định bí danh bổ sung mà dịch vụ là có thể truy cập từ một dịch vụ khác. Họ là không yêu cầu để cho phép dịch vụ giao tiếp - theo mặc định, mọi dịch vụ có thể đến bất kỳ dịch vụ nào khác tại tên dịch vụ đó.

https://docs.docker.com/compose/networking/#/links

tôi sẽ không lộn xộn xung quanh với các mạng trừ khi bạn thực sự hiểu những gì bạn đang làm, như trong hầu hết trường hợp giá trị mặc định sẽ làm việc tốt. Nếu bạn có một số trường hợp đặc biệt, bạn luôn có thể tối ưu hóa sau này.

0

Tôi không sử dụng yml, nhưng có cùng một bản ghi và điều này đã không làm việc

docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

Nhưng sau đó tôi tìm thấy, mà tôi phải thêm: mysql để chứa liên kết

docker run -dP --link elated_yonath:mysql -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

Bây giờ nó đã bắt đầu.

2

Giải pháp:

Hãy nhớ liên kết container mysql để container wordpress:

links: 
    - db:mysql 

Như thế này:

version: '2' 
services: 
    wordpress: 
    image: wordpress 
    ports: 
     - "8080:80" 
    links: 
     - db:mysql 
    environment: 
     WORDPRESS_DB_PASSWORD: example 
    db: 
    image: mysql:5.7 
    environment: 
     MYSQL_ROOT_PASSWORD: example 

chi tiết quan trọng này không được đề cập trên WordPress image official Dockerhub page

+0

Bí danh máy chủ 'mysql' trong liên kết quan trọng ở đây :( – bbeecher

0

này anwser đối với tôi, vì tôi không có đủ uy tín để bỏ phiếu anwser đó, tôi sao chép nó ở đây:

depends_on: - db Đó chỉ cần đảm bảo bình chứa cơ sở dữ liệu được nạp đầy đủ trước khi wordpress container. Bạn cần phải thông báo cho docker để liên kết vùng chứa db từ vùng chứa wordpress để tham chiếu đến theo tên.

Những gì docker-compose làm theo mui xe là đưa đế cắm ip cung cấp hộp chứa db và thêm mục nhập /etc/hosts vào vùng chứa wordpress để bạn có thể tham chiếu theo tên.

Vì vậy, hãy thử thêm này đến phần wordpress links: - db

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