Bây giờ nhá bình thường mysql server của mình chạy port 3306, khi đó ví dụ mình dùng phpmyadmin để làm interface connect vào thao tác với db thì đường dẫn nó sẽ là localhost:3306/phpmyadmin.... Đó là trên máy local nhưng giờ mysql server của mình được chạy bên trong container thì mình sẽ expose ra cổng 3307 để bên ngoài có thể connect và thao tác chẳng hạn -p 3306:3307 thì khi đó mình có thể xem db bên trong container như sau localhost:3307/....
Có chứ c? C có thể export cổng của db ra bên ngoài là 3307 để tạo cơ sở dữ liệu bằng tay sau đó tương tác db như bình thường.
Hoặc sử dụng "php artisan migrate"
vào trong container bằng lệnh "docker exec -it container_id bash" rồi chạy php artisan trong đó
Mình vừa tìm được cách thấy được file trong thư mục được mount là trước khi chạy lệnh đó thì mình Vào Setting (của Docker) => Chọn Share Drivers => Tick vào Ổ đĩa chứa project của mình. Rồi remove container cũ và chạy lạy lệnh đó sẽ thấy được các files trong thư mục project được mount.
Sau khi mình chạy lệnh: docker exec -it container_id_nay_copy bash thì có thư mục myproject nhưng trong thư mục myproject đó ko có file nào cả, chỉ là một folder empty.
Bạn kiểm tra container đang chạy bằng "docker ps".
Sau đó copy id của container đó (container tutum mà start ấy nhé)
Chạy lạnh sau: "docker exec -it container_id_nay_copy bash"
Bây giờ đã vào được bash bên trong container rồi đó, bạn kiểm tra trong đường dẫn /var/www/html trong container có "myproject" không nhé.
Và bạn kiểm tra lại cả đường dẫn của bạn "~/../../xampp/htdocs/myproject" có đúng không nhé, bằng cách vào terminal rồi cd tới xem kết quả như nào nha
Mình chạy thử localhost:9000 thì OK rồi. Nhưng mình chạy localhost:9000/myproject thì trong đó không có file nào hết (tức là trong thư mục này /var/www/html/myproject ko có file nào của myproject) nhưng trên máy của mình thì trong thư mục myproject có tất cả các file của myproject? Vậy mình có cần bước nào để sau khi chạy lệnh này thì trong thư mục var/www/html/myproject sẽ có tất cả các file giống như bên máy mình:
Một điều nữa là /myproject của bạn khi bạn vào trực tiếp trên máy với xampp qua url localhost/myproject ok chứ thì khi đó với docker mình sẽ vào như này
localhost:9000/myproject (ví dụ 9000 là cổng được export ra khi chạy docker)
THẢO LUẬN
Mình cũng chưa thử trên win, mình đang sử dụng với ubuntu 16.04 hehe,
Bây giờ nhá bình thường mysql server của mình chạy port 3306, khi đó ví dụ mình dùng phpmyadmin để làm interface connect vào thao tác với db thì đường dẫn nó sẽ là localhost:3306/phpmyadmin.... Đó là trên máy local nhưng giờ mysql server của mình được chạy bên trong container thì mình sẽ expose ra cổng 3307 để bên ngoài có thể connect và thao tác chẳng hạn -p 3306:3307 thì khi đó mình có thể xem db bên trong container như sau localhost:3307/....
Thì khi đó mình thao tác như bình thường với db
Còn về connect, db với ứng dụng có 2 cách thực hiện bạn đọc bài này của mình nhé hehe https://viblo.asia/telosma/posts/MLzGObNovpq
cái này mình phải connect với mysql trong container và import database vô cho nó đúng ko bạn?
Cài này mình chạy ổn rồi. Cảm ơn bạn trả lời nhiệt tình nhé!
Mình dùng windows 10
Nhiều bài viết hữu ích quá chị ạ
Bạn cứ test thử với một file .php chưa cần connect DB xem docker của bạn đã chạy ổn chưa nhé
Có chứ c? C có thể export cổng của db ra bên ngoài là 3307 để tạo cơ sở dữ liệu bằng tay sau đó tương tác db như bình thường. Hoặc sử dụng "php artisan migrate" vào trong container bằng lệnh "docker exec -it container_id bash" rồi chạy php artisan trong đó
(y) Thế là đang dùng win hả
Muốn chạy được project đó có cần tạo trước database trong mysql được cài đặt trong docker mà project đó chọn ko bạn?
Mình vừa tìm được cách thấy được file trong thư mục được mount là trước khi chạy lệnh đó thì mình Vào Setting (của Docker) => Chọn Share Drivers => Tick vào Ổ đĩa chứa project của mình. Rồi remove container cũ và chạy lạy lệnh đó sẽ thấy được các files trong thư mục project được mount.
Vậy đường dẫn ~/../../xampp/htdocs/my bạn đã check chưa?
Lạ nhỉ bạn cấp quyền 777 cho thư mục myproject trên máy local. docker rm id (cái container cũ đi). Sau đó chạy lại lệnh start nhé.
Sau khi mình chạy lệnh: docker exec -it container_id_nay_copy bash thì có thư mục myproject nhưng trong thư mục myproject đó ko có file nào cả, chỉ là một folder empty.
Good present. Thank chị.
Đúng rồi mà sao "~" là về home rồi lại còn ".." ^^
Bạn kiểm tra container đang chạy bằng "docker ps". Sau đó copy id của container đó (container tutum mà start ấy nhé) Chạy lạnh sau: "docker exec -it container_id_nay_copy bash" Bây giờ đã vào được bash bên trong container rồi đó, bạn kiểm tra trong đường dẫn /var/www/html trong container có "myproject" không nhé.
Và bạn kiểm tra lại cả đường dẫn của bạn "~/../../xampp/htdocs/myproject" có đúng không nhé, bằng cách vào terminal rồi cd tới xem kết quả như nào nha
Mình chạy thử localhost:9000 thì OK rồi. Nhưng mình chạy localhost:9000/myproject thì trong đó không có file nào hết (tức là trong thư mục này /var/www/html/myproject ko có file nào của myproject) nhưng trên máy của mình thì trong thư mục myproject có tất cả các file của myproject? Vậy mình có cần bước nào để sau khi chạy lệnh này thì trong thư mục var/www/html/myproject sẽ có tất cả các file giống như bên máy mình:
docker run -tid -p 9000:80 -v ~/../../xampp/htdocs/myproject:/var/www/html/myproject --name myproject-server --link mysqlserver:mysql tutum/apache-php
Good! Thanks c.
Cảm ơn bạn
Một điều nữa là /myproject của bạn khi bạn vào trực tiếp trên máy với xampp qua url localhost/myproject ok chứ thì khi đó với docker mình sẽ vào như này localhost:9000/myproject (ví dụ 9000 là cổng được export ra khi chạy docker)