Làm sao để setup docker ở server giống với docker local

Em chào anh chị,

Hiện tại trên laptop em đang có 2 container đang run tomcat và MS SQL server.
Em cài đặt ở máy dev theo thứ tự:

  • Pull image MS SQL server từ docker hub.
  • Đổi mật khẩu
  • Chạy vài lệnh config
  • Tương tự pull tomcat image từ docker hub.
  • Chạy lệnh config comcat.

  • Bên trong tomcat cũng đã có instance web đang run (chứa file war).
  • MS SQL Server cũng đã có một số data.

Em thường thuê VPS khuyến mãi nên vài tháng hoặc 1 năm em phải đổi server, vì vậy em đã config môi trường chuẩn hết ở local, em muốn đóng gói trạng thái web hiện tại thành 1 snapshot hoàn chỉnh, khi nào đổi server thì restore lại. (file “snapshot” này có thể nặng vài GB hoặc 1 script auto config máy tính).


Em mới tìm hiểu docker, có một vài thắc mắc mong được giải đáp:

  1. Em định pull image tomcat về cài, pull MS SQL server về cài, tương tự pull MySQL từ docker hub về tạo container rồi config lại như đổi port, đổi pass, … sau đó gom lại tạo thành 1 image duy nhất để copy lên server thì có được không? Hay mỗi app phải là một image độc lập VD: tomcat là một image riêng, mySQL là một image riêng biệt, …?

  2. Tạo file docker compose, cách này thì em lại không nhớ đủ ban đầu đã chạy những lệnh nào để viết lại script.

  3. Tạo file tar, có thể file khá nặng nhưng em không chắc nó có bao gồm docker volume được không?

Em cảm ơn!

  1. Em định pull image tomcat về cài, pull MS SQL server về cài, tương tự pull MySQL từ docker hub về tạo container rồi config lại như đổi port, đổi pass, … sau đó gom lại tạo thành 1 image duy nhất để copy lên server thì có được không? Hay mỗi app phải là một image độc lập VD: tomcat là một image riêng, mySQL là một image riêng biệt, …?

Cậu nên dùng image database riêng và image mySQL riêng. Nếu để chung, mỗi lần cậu cần sửa gì đó ở app là cậu phải build lại image có cả database ở đó.
Cậu có thể sử dụng docker compose để làm tất cả các thao tác cậu liệt kê (pull image, thay mật khẩu, start 2 container, etc). Khi đó, chỉ cần 1 lệnh cậu có thể làm tất cả mọi việc rồi.

  1. Tạo file docker compose, cách này thì em lại không nhớ đủ ban đầu đã chạy những lệnh nào để viết lại script.

Tớ không chắc là hiểu câu hỏi của cậu (nếu nó là câu hỏi).
Cậu thử tìm hiểu thêm về docker compose xem. Đó không phải script đâu cậu :smile:

  1. Tạo file tar, có thể file khá nặng nhưng em không chắc nó có bao gồm docker volume được không?

Tớ cũng không chắc hiểu câu hỏi này của cậu. Cậu định tạo file tar chứa gì? (toàn bộ local environment của cậu, hay docker image?) Và sao nó lại liên quan tới docker volume?

3 Likes

Dạ data của mySQL em lưu vào docker volume, file do user upload vào web em cũng lưu vào docker volume. VD như server A hết hạn, em thuê server B mới nên em muốn đóng gói cả docker volume để chuyển sang server B.

Ohm, thế thì cậu nên tách image riêng và dữ liệu riêng. Khi chuyển sang server mới, cậu cần copy lại dữ liệu vào đúng volume mới là được :smile:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?