Hướng dẫn docker-php cannot connect to mysql - docker-php không thể kết nối với mysql
Đây là docker-compose của tôi Show
Đây là cách tôi xây dựng php7-fpm của riêng mình: cuối cùng
Tôi không thể kết nối với container mysql
Tôi luôn gặp lỗi: "Cảnh báo: mysqli_connect (): (hy000/2002): Không có tệp hoặc thư mục như vậy trong /usr/share/nginx/html/db.php trên dòng 8 Kết nối không thành công: Không có tệp hoặc thư mục đó" Nơi tôi chạy lệnh sudo netstat -tulpn | GREP: 3306 Tôi nhận được TCP6 0 0 0 ::: 3306 :::* Nghe 15362/Docker-Proxy Xin vui lòng giúp đỡ ! Nhiều nắngunread, Ngày 9 tháng 2 năm 2021, 10:06:44 PM2/9/212/5/21 đến Redbeanphp Chỉ để làm rõ .. tôi đã thay đổi tệp PHP của mình và có thể kết nối với MySQL mà không cần Redbean .. và sau đó tôi đã cố gắng kết nối với cùng một DB với Redbean: docker-compose.yml: ``` Chỉ để làm rõ .. tôi đã thay đổi tệp PHP của mình và có thể kết nối với MySQL mà không cần Redbean .. và sau đó tôi đã cố gắng kết nối với cùng một DB với Redbean: services: yêu cầu 'rb.php'; // PHP đơn giản mà không có redbean $ host = 'mysql'; $ user = 'root'; $ pass = 'rootpassword'; $ Conn = new mysqli ($ host, $ user, $ pass); if ($ Conn-> Connect_error) { chết ("Kết nối không thành công:". $ Conn-> Connect_error); } // Làm việc tốt! // Tạo cơ sở dữ liệu có tên NewDB $ sql = "Tạo cơ sở dữ liệu newdb"; if ($ Conn-> truy vấn ($ sql) === true) { echo "cơ sở dữ liệu được tạo thành công với tên NewDB"; // làm việc tốt! } khác { echo "Lỗi tạo cơ sở dữ liệu:". $ Conn-> lỗi; } // Kết nối đóng // Cố gắng kết nối với cùng một cơ sở dữ liệu với Redbean $ Conn = new mysqli ($ host, $ user, $ pass); if ($ Conn-> Connect_error) { chết ("Kết nối không thành công:". $ Conn-> Connect_error); // Làm việc tốt! // Tạo cơ sở dữ liệu có tên NewDB $ sql = "Tạo cơ sở dữ liệu newdb"; if ($ Conn-> truy vấn ($ sql) === true) { echo "cơ sở dữ liệu được tạo thành công với tên NewDB"; // làm việc tốt! } khác { echo "Lỗi tạo cơ sở dữ liệu:". $ Conn-> lỗi; volumes: } ``` index.php: // Kết nối đóng Hình ảnh: MySQL: 5.7 yêu cầu 'rb.php'; print("hi"); // PHP đơn giản mà không có redbean $ post = r :: phân phối ('post'); $ post-> tiêu đề = 'kỳ nghỉ của tôi'; $ id = r :: store ($ post); $ post = r :: load ('post', $ id); print_r($post); ?> `` ` Thông báo lỗi: `` `Lỗi gây tử vong: PDOException chưa được thực hiện: Không thể kết nối với cơ sở dữ liệu (TestDB). in /var/www/html/rb.php:1101 Stack Trace: #0 /var/www/html/rb.php(798): RedBeanphp \ Driver \ rpdo-> Connect () /rb.php(1171): redbeanphp \ driver \ rpdo-> runquery ('show blay', mảng) #2 /var/www/html/rb.php(1192) Hiển thị bảng ', mảng) #3 /var/www/html/rb.php(4318): redbeanphp \ driver \ rpdo-> getcol (' show blay ', mảng) #4 /var/www/html/rb.php . /html/rb.php(9539): redbeanphp \ queryWriter \ AqueryWriter-> TableExists ('Post') #7 /var/www/html/rb.php(9641) #8 /var/www/html/rb.php(9773): redbeanphp \ repository \ fluid-> createdetableifnotexist (Object (redbeanphp \ oodbbean), 'post') . /rb.php on l ine & nbsp; 1101 `` `: Uncaught PDOException: Could not connect to database (testdb). in /var/www/html/rb.php:1101 Stack trace: #0 /var/www/html/rb.php(798): RedBeanPHP\Driver\RPDO->connect() #1 /var/www/html/rb.php(1171): RedBeanPHP\Driver\RPDO->runQuery('show tables', Array) #2 /var/www/html/rb.php(1192): RedBeanPHP\Driver\RPDO->GetAll('show tables', Array) #3 /var/www/html/rb.php(4318):
RedBeanPHP\Driver\RPDO->GetCol('show tables', Array) #4 /var/www/html/rb.php(7193): RedBeanPHP\Adapter\DBAdapter->getCol('show tables') #5 /var/www/html/rb.php(6138): RedBeanPHP\QueryWriter\MySQL->getTables() #6 /var/www/html/rb.php(9539): RedBeanPHP\QueryWriter\AQueryWriter->tableExists('post') #7 /var/www/html/rb.php(9641): RedBeanPHP\Repository->tableExists('post') #8 /var/www/html/rb.php(9773): RedBeanPHP\Repository\Fluid->createTableIfNotExists(Object(RedBeanPHP\OODBBean),
'post') #9 /var/www/html/rb.php(9344): RedBeanPHP\Repository\Fluid->storeBean(Object(RedBeanPHP\OODBBean)) #10 /var/www/html/rb.php(10454): RedBeanPHP\Repository->store(Ob in /var/www/html/rb.php on line 1101 ``` Lỗi gây tử vong: PDOException chưa được thực hiện: Không thể kết nối với cơ sở dữ liệu (TestDB). in /var/www/html/rb.php:1101 Stack Trace: #0 /var/www/html/rb.php(798): RedBeanphp \ Driver \ rpdo-> Connect () /rb.php(1171): redbeanphp \ driver \ rpdo-> runquery ('show blay', mảng) #2 /var/www/html/rb.php(1192) Hiển thị bảng ', mảng) #3 /var/www/html/rb.php(4318): redbeanphp \ driver \ rpdo-> getcol (' show blay ', mảng) #4 /var/www/html/rb.php . /html/rb.php(9539): redbeanphp \ queryWriter \ AqueryWriter-> TableExists ('Post') #7 /var/www/html/rb.php(9641) #8 /var/www/html/rb.php(9773): redbeanphp \ repository \ fluid-> createdetableifnotexist (Object (redbeanphp \ oodbbean), 'post') . /rb.php on l ine & nbsp; 1101: Uncaught PDOException: Could not connect to database (testdb). in /var/www/html/rb.php:1101 Stack trace: #0 /var/www/html/rb.php(798): RedBeanPHP\Driver\RPDO->connect() #1 /var/www/html/rb.php(1171):
RedBeanPHP\Driver\RPDO->runQuery('show tables', Array) #2 /var/www/html/rb.php(1192): RedBeanPHP\Driver\RPDO->GetAll('show tables', Array) #3 /var/www/html/rb.php(4318): RedBeanPHP\Driver\RPDO->GetCol('show tables', Array) #4 /var/www/html/rb.php(7193): RedBeanPHP\Adapter\DBAdapter->getCol('show tables') #5 /var/www/html/rb.php(6138): RedBeanPHP\QueryWriter\MySQL->getTables() #6 /var/www/html/rb.php(9539): RedBeanPHP\QueryWriter\AQueryWriter->tableExists('post') #7
/var/www/html/rb.php(9641): RedBeanPHP\Repository->tableExists('post') #8 /var/www/html/rb.php(9773): RedBeanPHP\Repository\Fluid->createTableIfNotExists(Object(RedBeanPHP\OODBBean), 'post') #9 /var/www/html/rb.php(9344): RedBeanPHP\Repository\Fluid->storeBean(Object(RedBeanPHP\OODBBean)) #10 /var/www/html/rb.php(10454): RedBeanPHP\Repository->store(Ob in /var/www/html/rb.php on line 1101 Matthew Fredericounread, Ngày 5 tháng 2 năm 2021, 10:21:17 AM2/5/212/5/21 đến R :: setup ('mysql: host = 172.17.0.2_9906; dbname = testDb', 'devuser', 'devPass');_9906;dbname=testdb', 'devuser', 'devpass' ); Nên có ':' trước 9906, ví dụ: R :: setup ('mysql: host = 172.17.0.2: 9906; dbname = testDb', 'devuser', 'devPass');:9906;dbname=testdb', 'devuser', 'devpass' ); - Nhiều nắngunread, Ngày 8 tháng 2 năm 2021, 5:23:04 PM2/8/212/8/21 đến Redbeanphp Chào Mattzilla Đó là một lỗi đánh máy trong bài viết, trong mã của tôi, nó thực sự là một dấu hai chấm. Nó vẫn không hoạt động. & NBSP; Marios kunread, Ngày 9 tháng 2 năm 2021, 5:19:38 AM2/9/212/9/21 đến R :: setup ('mysql: host = 172.17.0.2_9906; dbname = testDb', 'devuser', 'devPass'); Nên có ':' trước 9906, ví dụ: R :: setup ('mysql: host = 172.17.0.2: 9906; dbname = testDb', 'devuser', 'devPass'); - Nhiều nắng - Nhiều nắng Ngày 8 tháng 2 năm 2021, 5:23:04 PM2/8/21 đến Redbeanphp Chào Mattzilla Đó là một lỗi đánh máy trong bài viết, trong mã của tôi, nó thực sự là một dấu hai chấm. Nó vẫn không hoạt động. & NBSP; Marios k Nhiều nắngunread, Ngày 8 tháng 2 năm 2021, 5:23:04 PM2/8/212/9/21 đến Redbeanphp Chào Mattzilla Đó là một lỗi đánh máy trong bài viết, trong mã của tôi, nó thực sự là một dấu hai chấm. Nó vẫn không hoạt động. & NBSP; Marios k Ngày 9 tháng 2 năm 2021, 5:19:38 AM2/9/21 volumes: =>Error:
Vì bạn đang sử dụng Docker-Compose, có lẽ bạn nên sử dụng hệ thống DNS nội bộ thay vì IPS Hãy thử "Docker Exec -ti {{container_name}} /bin /bash" Vì bạn đang sử dụng Docker-Compose, có lẽ bạn nên sử dụng hệ thống DNS nội bộ thay vì IPS Hãy thử "Docker Exec -ti {{container_name}} /bin /bash" Sau đó, bên trong thùng chứa, bạn sẽ có thể ping các dịch vụ tương ứng với "ping db" hoặc "ping PHP" --- Bạn cũng có thể sử dụng các biến env từ tác phẩm tổng hợp "getenv ('db_host');" Ghi chú bên "Bạn cũng có thể sử dụng các biến env từ tác phẩm tổng hợp" getenv ('db_host'); "=> yeah nhưng nó sẽ chỉ sử dụng những gì tôi đã xác định trong docker-compose.yaml là db_host .. và đó cũng không hoạt động . & nbsp; Tôi không thể sử dụng ping trong hình ảnh => & nbsp; Đã thử cài đặt ping: $ apt-get update apt-get install iputils-ping $ping Đọc danh sách gói ... Tree phụ thuộc công việc & NBSP; & nbsp; & nbsp; & nbsp; đọc thông tin trạng thái ... hoàn thành: không thể xác định vị trí của gói iputils-pingping Đó là một nhiệm vụ đơn giản, nhưng tôi không thể thực hiện nó ... Tôi thậm chí không muốn nghĩ về bước tiếp theo: thực hiện việc chạy này trên Azure. Nhưng trước tiên tôi muốn có thể kiểm tra điều này tại địa phương. Nhiều nắngunread, Ngày 9 tháng 2 năm 2021, 10:06:44 PM2/9/212/9/21 đến Redbeanphp Chỉ để làm rõ .. tôi đã thay đổi tệp PHP của mình và có thể kết nối với MySQL mà không cần Redbean .. và sau đó tôi đã cố gắng kết nối với cùng một DB với Redbean: Chỉ để làm rõ .. tôi đã thay đổi tệp PHP của mình và có thể kết nối với MySQL mà không cần Redbean .. và sau đó tôi đã cố gắng kết nối với cùng một DB với Redbean: yêu cầu 'rb.php'; // PHP đơn giản mà không có redbean $ host = 'mysql'; $ user = 'root'; $ pass = 'rootpassword'; $ Conn = new mysqli ($ host, $ user, $ pass); if ($ Conn-> Connect_error) { chết ("Kết nối không thành công:". $ Conn-> Connect_error); } // Làm việc tốt! // Tạo cơ sở dữ liệu có tên NewDB $ sql = "Tạo cơ sở dữ liệu newdb"; if ($ Conn-> truy vấn ($ sql) === true) { echo "cơ sở dữ liệu được tạo thành công với tên NewDB"; // làm việc tốt! } khác { echo "Lỗi tạo cơ sở dữ liệu:". $ Conn-> lỗi; } // Kết nối đóng $conn->close(); // Cố gắng kết nối với cùng một cơ sở dữ liệu với Redbean R :: setup ('mysql: host = mysql; dbname = newdb', 'root', 'rootPassword'); // Lỗi: Lỗi nghiêm trọng: PDOException chưa được thực hiện: Không thể kết nối với cơ sở dữ liệu (NewDB). in /var/www/html/rb.php:1101 Dấu vết Stack: #0 /var/www/html/rb.php(798): RedBeanphp \ Driver \ rpdo-> Connect () $ post = r :: phân phối ('post'); $ post-> tiêu đề = 'kỳ nghỉ của tôi'; $ id = r :: store ($ post); $ post = r :: load ('post', $ id); print_r($post); ?> Vấn đề là ở Redbean ở đâu đó ... không có gì để làm với Docker hoặc Docker Compose. Marios kunread, Ngày 9 tháng 2 năm 2021, 10:27:38 PM2/9/212/9/21 đến Thử kết nối với vani pdo Mã mẫu Không thể kết nối với máy chủ MySQL trên Docker?Thông thường có nghĩa là không có máy chủ MySQL chạy trên hệ thống hoặc bạn đang sử dụng tên tệp unix không chính xác hoặc số cổng TCP/IP khi cố gắng kết nối với máy chủ. Bạn cũng nên kiểm tra xem cổng TCP/IP bạn đang sử dụng chưa bị chặn bởi tường lửa hoặc dịch vụ chặn cổng.there is no MySQL server running on the system or that you are using an incorrect Unix socket file name or TCP/IP port number when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.
Làm cách nào để kết nối với cơ sở dữ liệu docker mysql?Dưới đây là các bước bạn có thể làm theo để cài đặt Container MySQL của Dockerhub: Bước 1: Kéo hình ảnh Docker cho MySQL.Bước 2: Triển khai và bắt đầu thùng chứa MySQL.Bước 3: Kết nối với container Docker MySQL.Step 1: Pull the Docker Image for MySQL. Step 2: Deploy and Start the MySQL Container. Step 3: Connect with the Docker MySQL Container.
Tôi có thể chạy PHP trong Docker không?Nếu bạn mở động cơ DOCKER DEMENTOP, bộ chứa sẽ hoạt động và chạy.Để đảm bảo container được đặt để thực thi các tập lệnh PHP, hãy mở bài đăng cục bộ được xác định của bạn trong trình duyệt, tức là, http: // localhost: 8000/.Điều này cho thấy container được đặt để chạy một số mã điều khiển PHP.. To ensure the container is set to execute the PHP scripts, open your defined local host post in the browser,i.e., http://localhost:8000/ . This shows the container is set to run some PHP-driven code.
Tôi có thể sử dụng mysql với docker không?MySQL là một trong những cơ sở dữ liệu quan hệ tương thích SQL phổ biến nhất.Chạy MySQL bên trong container Docker cho phép bạn tách cơ sở dữ liệu của mình khỏi mã của mình.Bạn cũng có thể sử dụng một dàn nhạc container như Kubernetes để mở rộng quy mô MySQL độc lập với thể hiện máy chủ API của bạn.Running MySQL inside a Docker container lets you separate your database from your code. You can also use a container orchestrator like Kubernetes to scale MySQL independently of your API server instance. |