Chúng tôi đang kết nối với cơ sở dữ liệu MYSQL có tên là kiểm tra và trong tuyến / GET, chúng tôi đang hiển thị tất cả nội dung được lưu trữ trong bảng Sinh viên
Bây giờ, chúng ta cần cập bến chương trình phụ trợ của mình.
Vì vậy, hãy tạo một Dockerfile [không có bất kỳ phần mở rộng nào] trong cùng một thư mục web.
FROM node:15-alpineWORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 5000 CMD ["npm", "start"]
- Chúng tôi đang sử dụng nút. 15 làm hình ảnh cơ sở [núi cao vì nó có kích thước rất nhỏ]
- Sau đó, chúng tôi tạo một thư mục làm việc/ứng dụng bên trong vùng chứa
- Sau đó sao chép gói. json và khóa gói. json vào thư mục/ứng dụng
- Chạy cài đặt npm để cài đặt các phụ thuộc [trong trường hợp của chúng tôi là express và mysql]
- Sao chép các tệp còn lại [đảm bảo tạo. dockerignore và thêm node_modules để bỏ qua node_modues đang được sao chép]
- Hiển thị cổng 5000 để chúng tôi có thể truy cập ứng dụng bên ngoài vùng chứa
- Cuối cùng chạy npm start để bắt đầu phụ trợ [đảm bảo thêm npm start script trong gói. json]
Chúng ta đã tạo phụ trợ nodejs và Dockerfile.
Bây giờ hãy tạo hình ảnh docker MYSQL.
Đầu tiên vào thư mục gốc và trong thư mục gốc tạo một thư mục mới có tên là db và cd vào đó
mkdir db && cd db
touch testdump.sql
touch Dockerfile
- Trong kết xuất thử nghiệm. sql, chúng tôi sẽ viết các truy vấn SQL bắt đầu sẽ chạy khi bộ chứa MYSQL khởi động.
Chúng ta cần tạo một bảng Student và chèn một vài giá trị vào bên trong nó để chúng ta có thể truy vấn nó từ ứng dụng nodejs của mình.
Viết phần sau vào testdump. sql —
CREATE TABLE Student[
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;
Ở đây chúng tôi đã tạo một bảng Sinh viên và chèn 2 mục
Ngoài ra, bạn cần thay đổi quyền root của người dùng vì
docker run -dp 5000:5000 varsubham/sample_node
9 trong Nút [gói chúng tôi đã cài đặt vớidocker run -dp 5000:5000 varsubham/sample_node
0 ] không hỗ trợ phương thức xác thực mặc định mới của MySQL 8
Đó là lý do tại sao chúng tôi cần .
Bây giờ hãy tạo Dockerfile cho hình ảnh MYSQL
FROM mysql EXPOSE 3306 COPY ./testdump.sql /docker-entrypoint-initdb.d/
Chúng tôi đã sử dụng MYSQL mới nhất làm hình ảnh gốc, hiển thị cổng mặc định [3306] và sao chép kết xuất thử nghiệm. sql sang docker-entrypoint-initdb. d [tất cả tập lệnh sql bên trong thư mục này sẽ thực thi khi vùng chứa khởi động]
Tạo tập tin docker-composeChúng ta đang gần hoàn tất. Chúng ta có thể xây dựng và chạy riêng cả hai docker container, nhưng cách hiệu quả là tạo một docker-compose. yaml [mô tả tất cả các cấu hình] để khởi động toàn bộ ứng dụng của chúng tôi bằng một lệnh duy nhất
Chúng tôi sẽ khởi tạo cơ sở dữ liệu thử nghiệm của mình bằng một lược đồ mẫu. Tải xuống kết xuất thử nghiệm. sql và đặt nó trong thư mục mysql-microservice cùng với Dockerfile
Tạo một thư mục dữ liệu nơi mysql sẽ lưu trữ nội dung của nó
docker run -dp 5000:5000 varsubham/sample_node
0. Chúng tôi sẽ chỉ định thư mục này trong khi chạy bộ chứa mysql của chúng tôi. Trên thư mục lưu trữ mặc định của Linux là docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
0 nhưng trong hướng dẫn này, chúng tôi sẽ sử dụng thư mục lưu trữ tùy chỉnhXây dựng hình ảnh với Dockerfile
docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
1 Lưu ý rằng chúng ta đang ở trong thư mục mysql-microservice. docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
2 sẽ là tên của hình ảnh của chúng tôiBạn có thể kiểm tra hình ảnh mới được tạo của mình bằng cách sử dụng
docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
3Chạy hình ảnh docker mới được tạo dưới dạng vùng chứa
docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
Với lệnh trên, chúng tôi đã khởi động vùng chứa của mình ở chế độ tách rời
docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
4 và cổng máy chủ [máy của bạn] được ánh xạ 6603 với cổng vùng chứa 3306 [máy chủ mysql] docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
5. Chúng tôi cũng đang sử dụng thư mục lưu trữ dữ liệu tùy chỉnh của mình bằng cách chỉ định dung lượng đường dẫn máy chủ docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
6. Thay thế đường dẫn docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
7 thành đường dẫn tuyệt đối của thư mục dữ liệu mà bạn đã tạo trên hệ thống của mình. Chúng tôi cũng đang đặt tên vùng chứa của mình là test-mysql-microservice docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
8Kiểm tra nhật ký để xem mọi thứ có suôn sẻ không
docker run -d \
--publish 6603:3306 \
--volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \
--name=test-mysql-microservice test-mysql
9Kiểm tra trạng thái vùng chứa của bạn
mkdir db && cd db
touch testdump.sql
touch Dockerfile
80Chúng tôi đã khởi chạy thành công vùng chứa mysql
Kết nối với bộ chứa mysql mới được khởi chạy từ máy chủ [tùy chọn]
Để xác minh rằng bộ chứa test-mysql-microservice của chúng tôi đã hoạt động, chúng tôi sẽ kết nối với nó. Thực hiện theo các bước bên dưới nếu bạn đã cài đặt mysql [mysql-client] trên hệ thống của mình
Kiểm tra ip của hệ thống của bạn. Trên Linux sử dụng
mkdir db && cd db
81. Hãy nói rằng ip là 192. 168. 43. 147
touch testdump.sql
touch DockerfileKết nối với bộ chứa test-mysql-microservice với các thông số sau- user-root, host=192. 168. 43. 147, cổng=6603, cơ sở dữ liệu=kiểm tra và mật khẩu=mật khẩu. Hãy nhớ rằng chúng tôi đã chỉ định tên người dùng và mật khẩu gốc trong Dockerfile. Ngoài ra, vùng chứa của chúng tôi được khởi tạo với test-dump. sql [một lược đồ với tên cơ sở dữ liệu kiểm tra]
mkdir db && cd db
82 Sử dụng mật khẩu=mật khẩu khi được nhắc và nhấn enter
touch testdump.sql
touch DockerfileNếu kết nối thành công bạn có thể xem mẫu bảng học sinh
mkdir db && cd db
83
touch testdump.sql
touch Dockerfilemkdir db && cd db
84 khi thực hiện xong.
touch testdump.sql
touch Dockerfile
Khởi chạy ứng dụng nodejs trong vùng chứa
Ngay bây giờ chúng tôi đang ở thư mục mysql-microservice. Chúng tôi đi đến thư mục gốc của dự án
mkdir db && cd db
85
touch testdump.sql
touch Dockerfiletạo thư mục cho nút microservice
mkdir db && cd db
86
touch testdump.sql
touch DockerfileDi chuyển đến thư mục này
mkdir db && cd db
87
touch testdump.sql
touch DockerfileTạo một Dockerfile với nội dung sau [tên của tệp sẽ là
docker run -dp 5000:5000 varsubham/sample_node
1]mkdir db && cd db
8
touch testdump.sql
touch DockerfileChúng tôi cần một gói. json cho ứng dụng nút-microservice cũng như mã nguồn của chúng tôi. Đối với hướng dẫn này, tôi đã tạo một. Tải xuống gói. json cũng như chỉ mục. js và đặt nó vào trong thư mục nodejs-microservice cùng với Dockerfile
Xây dựng hình ảnh với Dockerfile
mkdir db && cd db
89 Lưu ý rằng chúng tôi đang ở trong thư mục nodejs-microservice.
touch testdump.sql
touch DockerfileCREATE TABLE Student[
80 sẽ là tên của hình ảnh của chúng tôi
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;Bạn có thể kiểm tra hình ảnh mới được tạo của mình bằng cách sử dụng
3docker run -d \ --publish 6603:3306 \ --volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \ --name=test-mysql-microservice test-mysql
Chạy hình ảnh docker mới được tạo dưới dạng vùng chứa
CREATE TABLE Student[
8
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;
- Giải thích về lệnh trên-
4 chạy ở chế độ tách rờidocker run -d \ --publish 6603:3306 \ --volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \ --name=test-mysql-microservice test-mysql
CREATE TABLE Student[
83 ánh xạ cổng máy chủ 4000 tới cổng container 4000
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;CREATE TABLE Student[
84 chuyển các biến môi trường cho ứng dụng nodejs cần thiết để tạo kết nối mysql [kiểm tra chỉ mục. tập tin js]
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;CREATE TABLE Student[
85 liên kết đến vùng chứa có tên test-mysql-microservice và gọi nó là db
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;
8 đặt tên vùng chứa của chúng tôi là test-nodejs-microservicedocker run -d \ --publish 6603:3306 \ --volume=/home/varunkumar/getting-started-docker-mysql-nodejs/mysql-microservice/data:/var/lib/mysql \ --name=test-mysql-microservice test-mysql
- Cách biết MYSQL_HOST của bạn- Lưu ý rằng tôi đang sử dụng địa chỉ ip
CREATE TABLE Student[
87 làm MYSQL_HOST. Đây là Địa chỉ IP của bộ chứa test-mysql-microservice của chúng tôi. Bạn phải thay thế giá trị này thành ipAddress vùng chứa của bạn. Sử dụng
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;CREATE TABLE Student[
88
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;
Thử nghiệm ứng dụng hoàn chỉnh của chúng tôi
Nếu mọi thứ vẫn ổn thì xin chúc mừng😄Bạn có một ứng dụng hoàn chỉnh chạy với hai vi dịch vụ. Để kiểm tra điều này, bạn có thể sử dụng lệnh CURL từ máy chủ của mình
Nhận trang chủ của ứng dụng của bạn
CREATE TABLE Student[
89
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR[60],
student_age INT
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Shubham verma",
21
];INSERT INTO Student[
student_name,
student_age]
VALUES[
"Utkarsh verma",
23
];ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'; flush privileges;Lấy danh sách tất cả học sinh từ cơ sở dữ liệu kiểm tra
docker run -dp 5000:5000 varsubham/sample_node
20 Tại đây 192. 168. 43. 147 là Địa chỉ IP máy chủ của tôi ________ 421