2014-12-18 26 views
12

Đây là câu hỏi chung hơn về cách kết nối với các dịch vụ địa phương thông qua Docker. Có một câu hỏi tương tự trong một vấn đề Github here mà dường như không có bất kỳ độ phân giải nào. Những gì tôi thực sự tìm kiếm là có thể phát triển cục bộ với máy chủ MySQL phát triển cục bộ của mình, sau đó một khi tôi đã sẵn sàng triển khai, để thử nghiệm cục bộ đối với một hình ảnh docker triển khai mới được tạo ra.Làm thế nào để kết nối với máy chủ MySQL cục bộ thông qua Docker?

Lý tưởng nhất, cả hai đều nhận cài đặt từ cùng một địa điểm, vì vậy tôi có thể đặt mysql_server: host_ip. Điều này có vẻ giống như một trường hợp sử dụng điển hình. Có cái gì như thế này hiện tại có thể không?

Tôi đang sử dụng Boot2Docker cụ thể với máy chủ MySQL chạy trên máy chủ của tôi OS X Yosemite NOT trong vùng chứa. Sẽ được mát mẻ để có một câu trả lời chung hơn cho người đọc trong tương lai mặc dù.

Trả lời

12

Các Docker CLI docs đưa ra giải pháp này (mà giả sử bạn đang chạy trên một máy chủ Linux với):

Đôi khi bạn cần phải kết nối với máy chủ Docker từ bên trong container của bạn. Để bật tính năng này, hãy chuyển địa chỉ IP của máy chủ lưu trữ Docker đến vùng chứa bằng cách sử dụng cờ --add-host. Để tìm địa chỉ của máy chủ, hãy sử dụng lệnh ip addr show.

Cờ bạn chuyển đến ip addr show phụ thuộc vào việc bạn đang sử dụng mạng IPv4 hoặc IPv6 trong vùng chứa của mình. Sử dụng các cờ sau cho IPv4 hồi địa chỉ cho một thiết bị mạng tên eth0:

$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d/-f 1` 
$ docker run --add-host=docker:${HOSTIP} --rm -it debian 

Sau đó tên docker bên trong container sẽ ánh xạ địa chỉ IP của máy chủ. Đối với trường hợp của bạn, bạn có thể sử dụng docker run --add-host=mysql_server:$(hostip) ...

Nếu sử dụng Boot2Docker, nó thiết lập một ánh xạ để dẫn chương trình tại địa chỉ được xác định trước, vì vậy trên nền tảng đó tương đương với ở trên chỉ là một lệnh:

$ docker run --add-host=docker:192.168.59.3 --rm -it debian 
+2

Điều này thật tuyệt, nhưng theo như tôi có thể nói, nó không hoạt động trên Mac. Lệnh 'ip' không được cài đặt theo mặc định, và tôi không thể tìm thấy bất kỳ cách nào để cài đặt nó (" ip "là một điều khó khăn đối với google). Bạn có thể cung cấp thêm lời khuyên về việc này để làm việc trên máy Mac không? – Eli

+0

Bạn có MySQL đang chạy trên máy Mac? Docker đang chạy bên trong một số máy ảo đang chạy trên máy Mac? Bạn có thể cung cấp một số chi tiết về thiết lập của mình không? – Bryan

+2

Nếu sử dụng Boot2Docker, nó thiết lập máy chủ Mac là 192.168.59.3 – Bryan

0

Để trợ giúp với một số câu hỏi bổ sung và bài đăng chính tôi muốn link to a repo Tôi đã quản lý để quản lý phát triển địa phương của mình. Tôi đã ngừng cố gắng chạy bất kỳ dịch vụ nào cho sự phát triển của mình trực tiếp trên OS X và sử dụng các thùng chứa Docker vì chúng hoạt động giống nhau trên sản xuất và môi trường của tôi có thể được kết hợp và sắp xếp hợp lý.

Repo này bao gồm máy chủ web, máy chủ cơ sở dữ liệu và vùng chứa dữ liệu để tải cơ sở dữ liệu MySQL.

Tôi có và sẽ tiếp tục hỗ trợ repo này và gần đây đã nâng cấp tài liệu để biến nó thành chìa khóa cho nhà phát triển khác.

Docker Repo on GitHub

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