- công ty chúng tôi hướng tới việc cung ứng các tutorial và kim chỉ nan liên quan tiền đến technology Java, đặc biệt là J2EE/Java
EE- cửa hàng chúng tôi không nhà trương hỗ trợ source code, video trên web site này chính vì chúng tôi mong muốn muốn chúng ta làm từng bước một để cảm thấy được con kiến thức, gọi biết với kết quả. Biện pháp tiếp cận của công ty chúng tôi là làm mỗi bước bằng hướng dẫn- hướng tiếp cận của công ty chúng tôi theo hướng biểu thị các định hướng thông qua ví dụ sẽ giúp tiết kiệm thời gian
Xây dựng môi trườnghỗ trợ làm cho việc team với Docker
Bài 2: Tạo lập môi trườngphát triển ứng dụng web bao gồm kết nối cơ sởdữ liệu
Kiều
Trọng Khánh, Nguyễn Lê Nhật Trường
Mục đích: Tiếptheo bài xích viết về “Tạo lập sẵn công cụ quảnlý cơ sở dữ liệu”, chúng ta sẽ đi kiếm tìm hiểucách xây dựng và cấu hình services về môi trường đểcó thể deploy ứng dụng web (web container) phạt triển bằngcông cụ ant có kết nối cơ sở dữ liệu vớimục tiêu tất cả thể sử dụng độc lập trên tấtcả những máy của member của team trong việc phân phát triểndự án hay trên máy tính xách tay của người học lậptrình ứng dụng.
Bạn đang xem: Cài đặt và cấu hình môi trường phát triển web
Yêu cầu về kiếnthức cơ bản
·Nắm vững những kiến thức về docker từkhái niệm đến việc tải đặt docker desktop (thamkhảo tại địa chỉ Docker Documentation | Docker Documentation)(Nội dung về cấu hình về mặt tip,trick sẽđược cung cấp trong số bài tiếp theo)
·Nắm vững kiến thức và các sử dụngtài nguyên trên Docker Hub (tham khảo tại địa chỉ Docker Hub - Container Image
Library | Docker )
·Tìm hiểu các lệnh docker-compose (tham khảo tạiđịa chỉ Composefile | Docker Documentation)
·Tìm hiểu cú pháp lệnh của tập tin YAML (thamkhảo tại địa bỏ ra YAMLAin’t
Markup
Language(YAML™)Version1.2)
·Nắm vững là đã thực hiện hoàn thành bài viết“Tạo lập sẵn công cụ quản lý cơ sở dữliệu – Database Management System – dùng thông thường độc lậpmôi trường phạt triển” (tham khảo tại địachỉ http://www.kieutrongkhanh.net/2021/08/bai-1-tao-lap-san-cong-cu-quan-ly-co-so.html)
·Nắm vững với đã thức hiện phân phát triểnứng dụng website với quy mô MVC2 sử dụng ant tool(tham khảo tại địa chỉ http://www.kieutrongkhanh.net/search/label/Servlet%26JSP, http://www.kieutrongkhanh.net/search/label/Video_Servlet,http://www.kieutrongkhanh.net/search/label/Video_JSP)
·Nắm vững cấu trúc của gói ứng webđược deploy vào website container (war file) (tham khảo tạiđịa chỉ Application
Developer"s Guide (7.0.109) - Deployment (apache.org))
Công cụ thực hiện
·Để thực hiện và thao táo bị cắn dở trong quá trìnhxây dựng services – tool Microsoft Visual Code (Download Visual Studio Code -Mac, Linux, Windows)
·Docker Desktop (Docker Desktop for Macand Windows | Docker)
·Microsoft SQL vps Management Studio (Download
SQL hệ thống Management Studio (SSMS) - SQL server Management Studio (SSMS) |Microsoft Docs) xuất xắc DBeaver (DBeaver
Community | không tính phí Universal Database Tool) tuyệt bất kỳ công cụhỗ trợ kết nối dữ liệu với DBMS (tool
Netbeans IDE cũng hỗ trợ vào Services/Database)
·Công cụ ant tool cần sử dụng để build ứng dụngweb (tham khảo tại địa chỉ Apache Ant - Welcome)
Xây dựng service-dockercho môi trường triển khai ứng dụng web (webcontainer) có kết nối cơ sở dữ liệu
·Chúng ta tiếp tục bổ sung service docker vàotrong project mà chúng ta đã tạo lập ở bài bác 1 vớitên gọi là SQLServer
Tomcat
Docker.
·Chúng ta thực hiện mở tool Microsoft VS Code vớitruy cập đến thư mục project.
o
Chúng ta thực hiện tạo thêm thư mụcsrc với mục tiêu là thư mục này sẽ chứaproject web để thực hiện build với deploy đưavào container

·Bước chuẩn bị: bọn họ cần chuẩnbị một gói ứng dụng website để thực hiệndeploy (file war) với việc đã thử nghiệm và chạy thành công.Trong bài xích viết này, chúng ta sử dụng bài xích ứng dụngđã tất cả sẵn tại phần nội dung tham khảo ởtrên để thực hiện deploy ứng dụng
o
Chúng ta sử dụng gói war đã đươclàm sẵn bởi các IDE tool lập trình sau khoản thời gian xây dựng ứngdụng. Gói war ở đây tất cả cấu trúc như sau

§Với những thư mục META-INF

§Thư mục WEB-INF

§Thư mục lib

o
Chúng ta dán/paste nội dung đã copy vào thư mụcsrc của project docker đã tạo sẵn ở các bướctrên

o
Các nội dung cơ bản đến việc chuẩn bịthiết lập môi trường deploy, build ứng dụngđã xong. Họ tiến tới bước cấu hìnhservice -docker vào nội dung tiếp theo.
o
Các bước bọn họ thực hiện áp dụngđúng theo 03 bước vào việc thiết lậpservice docker đã nêu ra ở bài xích 1.
·Bước 1: Chuẩn bị cấu hình Web
Container với việc phân chia công việc thành các giai đoạnthực hiện riêng rẽ biệt (stage) để thể hiệnđầy đủ những nội dung liên quan đến xây dựngmôi trường từ việc build cho đến khi deployvào môi trường thực thi
1.Start website Container
2.Deploy gói war vào vào Web container
o
Chúng ta bắt đầu với mục tiêu thiếtlập service docker cho web container, cụ thể ở đâylà Tomcat Server
§Chúng ta tiếp thành phần service docker đến tomcat từimage name bên trên docker hub như sau

·Tên image này còn có được là do bọn họ search trêndocker hub với từ khóa “tomcat”

·Chúng ta vào trong tag cùng click search giá trị “8.5”

·Chúng ta chọn bản tương thích, bọn chúng tađã phát triển ứng dụng web ở phần chuẩnbị. Ở bài bác viết này, cửa hàng chúng tôi đã phát triển ứngdụng web với jdk 8 với đã chạy demo thử vớitomcat vps 8.5.69 (tương say mê với cả 8.0.27 đangcó vào Netbeans 8.2)

§Chúng ta vừa hoàn tất bước đầulà thiết lập service docker từ image cho tomcat hệ thống – webcontainer
o
Chúng ta chuyển thanh lịch bước tiếp theo là thựchiện deploy gói ứng dụng website đã chuẩn bị sẵnvào vào tomcat container vừa thiết lập vào bướctrên
§Chúng ta bổ sung script vào web.Dockerfile với mụctiêu copy gói war đã được build thành công vào trongthư mục webapps của service tomcat trong file image

§Phần biến môi trường tương tác vớitomcat, bọn họ có thể tham khảo lúc click vào tag, ởđây chúng ta có thể tham khảo tại địa chỉImage
Layer Details - tomcat:8.5.69-jdk8-openjdk -sha256:74c23e26a496b8b87065bf1c89d77bc96d09de12aa0b96f18a9c6c1cf59fb209 |Docker Hub
o
Chúng ta vừa xong xuôi dockerfile đế cấuhình service container cho web container với tập lệnh buildvà đóng gói ứng dụng, và thiết lập servicecontainer cho tomcat rồi cuối cùng thực hiện chép ứngdụng vào vào thư mục web để khi imageđược nạp vào container thì ứng dụng sẽđược deploy
·Bước 2: Thiết lập service đãđịnh nghĩa vào trong file cấu hình docker-compose.yml
o
Chúng ta mở file docker-compose.yml vào thư mụcproject đã tạo sẵn ở bài bác 1 đã thiết lậpcấu hình service quản lý cơ sở dữ liệuđể chúng ta bổ sung các nội dung cấu hình nhưsau



§Chúng ta thuộc đi tìm hiểu những nội dung chúng tađã cấu hình bổ sung
·Chúng ta bổ sung khai báo service về môi trườngdeploy ứng dụng website (web container)
o
Chúng ta khai báo thương hiệu service tùy ý theo ý định. Bàiviết này, họ tạm khai báo là web-container
o
Với loại image, họ mong muốn image đangđược build sẽ bao gồm name:tag theo định dạng.Ở đây họ đang đặt tên là web-container:1.0.0.Lưu ý đây chỉ là tên gọi image sẽ build ở local, chúngta sẽ thực hiện build image với public trên docker hub ởcác bài sau
o
Với loại build, chúng ta đang xác địnhservice được build từ file docker file đangđược chị định cùng xác định thưmục đang làm cho việc trong quy trình build (build context) thôngqua loại context. Vì vậy, bọn họ có thể hiểu chiếc này theocách là tạo container SQL server theo cấu hình trong tập tin web.Dockerfileđược chứa trong thư mục prepare và buildcontext là thư mục src.
o
Bởi vì web container của java chạy tạilocal đa số đang được host port 8080 nhưngvới khái niệm container được tạo ra đangrun trong docker với port 8080. Tương tự như ởbài 1, nếu quí vị không tồn tại xung đột gồm thể vẫnđể nguyên port 8080 theo định dạng port_của_máy_tính:port_trong_container(ví dụ trong bài bác viết này là 8080:8080)
o
Volumes là cách thức để bọn họ mapping dữliệu từ docker host theo khái niệm là khi container kích hoạtthì docker host (ứng dụng docker) sẽ tạo ra vùng chứadữ liệu (tương tự phân vùng ổ cứng) vàsẽ cung cấp cơ chế cho container mapping tới sửdụng. Mặc dù nhiên, việc tương tác với docker hostđể lấy dữ liệu backup xuất xắc đổ thêm dữliệu vào sẽ hơi phức tạp nên bọn họ sẽ ánh xạsong tuy nhiên nó ra nơi lưu trữ ở sản phẩm thật qua cái cấuhình volumes ở bên dưới với đường dẫncụ thể trong device
o
Tương tự ở bài 1,chúng ta cấu volumescho website container ở dòng 43.
·Bước 3 : Thực hiện run dockercompose để có kết quả
o
Tại màn hình terminal vào Microsoft VS Code, họ thựchiện build image bằng lệnh docker-compse build >
§Lưu ý: đường dẫn của terminal phảilà đường dẫn đến thư mục project củachúng ta
§Cấu trúc project của chúng ta hiện ni nhưsau

§Trong bài này họ sẽ build service web-container
§Màn hình terminal lúc bắt đầu
§Chúng ta nhập lệnh sau dấu nhắc, cụthể docker-compose build web-container
§Chúng ta nhấn enter, họ thấy đượckết quả như sau

·Lưu ý: trên đây là màn hình tóm gọn cuốicùng bởi ở lần đầu tiên chạy chúng ta sẽ thấyviệc download các image từ hub repository về nên thông tin cóthể nhiều hơn tùy thuộc vào lần thực thi
§Các thành phần thiết lập để ứngdụng được đặt trong thư mục mặcđịnh của web-container đã được chuẩnbị sẵn sàng để khi image được nạpthành container thì ứng dụng cũng được deploysau khi hệ thống được start
·Trong bước này nếu bao gồm lỗi xảy rathường là do bug trong những source code lập trình củachúng ta, bọn họ đọc lỗi trên terminal để khắcphục
§Chúng ta kiểm tra việc image đã đượcbuild thông qua lệnh docker image ls

§Lưu ý:
·Chúng ta cần phải gồm service cơ sở dữliệu ở bài xích 1 để gồm thể thiết lậpđầy đủ môi trường có tác dụng việc khi thựchiện docker up. Nếu chưa có họ thực hiệnbuild lại image của web-db trong bài xích 1
·Sau đó, kiểm tra để đảm bảocó những image cần thiết để gồm thể nạp môitrường mang đến việc vạc triển ứng dụng web

o
Chúng ta bắt đầu nạp những container bằnglệnh docker-compose up và nhấn enter
§Khởi động nạp những service
….
§Nạp web container cùng deploy ứng dụng
…
§Nạp cơ sở dữ liệu tươngtự như bài bác 1

…

…

§Chúng ta kiểm tra trên docker desktop, chúng ta sẽ nhậnthấy

§Đây là container bao gồm 02 service đang đượcthực thi. Một cái là web server container và mẫu còn lại chínhlà service cơ sở dữ liệu đang chạy với
DBMS là SQL hệ thống 2017 (nội dung đã được thựchiện ở bài bác số 1)
§Chúng ta mở vị trí maps volumns của chúng tatương ứng với cấu hình dòng 42 trong file yml,chúng ta sẽ thấy ứng dụng đã đượcdeploy
o
Chúng ta mở trình duyệt và kiểm tra thử vớiđường dẫn http://localhost:8080/My
Web
Applicationvà nhấn enter
§Ứng dụng website đã được deploy vàrun, chúng ta test thử với chức năng login vớiaccount đã thiết lập vào script db trong bài bác 1
·Chúng ta nhập username với password, rồi nhấnenter
·Kết quả chúng ta nhận được

·Đây kết quả không chính xác cho dù họ nhậpđúng
·Chúng ta quan sát lại màn hình terminal, chúng ta nhận thấy

·Lỗi này xuất hiện là do chúng ta cấu hìnhdatasource tầm nã cập DB qua địa chỉ localhost vớiport 1433. Cấu hình này đúng khi vps tomcat và Sql serverđược cài đặt đặt trên thuộc 1 máy
·Tuy nhiên, ở đây bọn họ đang tạo những 2container riêng rẽ biệt để vận hành tomcat với SQL server (hìnhkết quả nạp service mà họ thấy vào dockerdesktop đã nêu ra ở những bước trên) đề xuất cấu hìnhtrên sẽ không thể phù hợp. Theo mặc định, cácservice của cùng 1 docker-compose sẽ được kếtnối vào cùng 1 network (sẽ được giải thíchtrong các bài sắp tới). Các service sẽ gọi nhau thôngqua tên của service, cụ thể là cái name đượcđịnh nghĩa theo cấp độ index kế tiếpcủa services vào tập tin yml
·Cụ thể ở đây để truy hỏi cập
DB bọn họ có thể tróc nã cập thông qua service tên web-db
·Chúng ta khắc phục giải pháp này bằng giải pháp mở tậptin context.xml trong thư mục META-INF của gói war và chỉnhsửa như sau
o
Chúng ta cập nhật lại context path thành thương hiệu củagói website được build tại path=””, cụ thể ởđây bọn họ điền tên /My
Web
Application
o
Bên cạnh đó, bọn họ thay đổi chữlocalhost thành tên service docker name của DB, cụ thể ởđây là web-db

§Chúng ta thực hiện gỡ các service đã nạpra bằng lệnh docker-compose down

§Chúng ta xóa cache của DB tại những thư mụcmap volumn, cụ thể là các thư mục db cùng webappsđược cấu hình trong loại 36 và 42 của file yml trênổ đĩa cứng của bọn chúng ta
·Lưu ý: việc này rất quan liêu trọng vìnó tất cả khả xảy ra vấn đề là chạy lạicache cũ mang đến dù họ đã modified source code với dẫn đếncác tác hại nghiêm trọng như chạy lỗi cũ, vẫnchạy ứng dụng tốt mặc dầu source code mới bịbug
§Chúng ta cần thực hiện build lại serviceweb-container vì bọn họ có nuốm đổi nội dung source code củaứng dụng nghĩa là cố đổi nội dung trongfile image
·Chúng ta sử dụng docker-compose build web-containerđể thực hiện build lại image mang lại service web server
§Sau lúc image đã được build thành công,chúng ta thực hiện nạp lại service container vớilệnh docker-compose up
·Quá trình này sẽ gồm khả năng xuất hiệnlỗi như sau

o
Lỗi này xuất hiện là do các volumn đượctạo vào docker host vẫn còn tồn tại dẫn đếnkhi services mới được nạp không thể ghiđè những volumn này theo kiểu giống như vào hệđiều hành thì ổ cứng hay file đang đượcsử dụng, họ không thể xóa hay nuốm đổi nộidung của file
·Chúng ta thực hiện xác định thương hiệu củacác volumn này vào docker host bằng lệnh docker volumn ls

·Chúng ta đã xác định những volumn đang tồntại, họ sẽ thực hiện xóa những volumn này vớilệnh docker volumn rm >
o
Xóa volumn db

§Kết quả thấy lại bao gồm tên volumn làchúng ta đã xóa thành công
oÁp dụng tương tự mang lại volumn của webserver

o
Chúng ta thực hiện liệt kê các volumn đangcó

·Chúng ta thực hiện lại docker-compose up đểnạp lại container với những service
·Việc nạp những service cùng container thành công xuất sắc thìchúng ta thực hiện test lại kết quả trên browser

o
Khi click nút Login, họ có kết quả
o
Và dưới terminal, chúng ta không thấy bao gồm lỗigì cả
§Chúng ta đã xong xuôi xong việc cấu hình môitrường làm việc triển khai thử nghiệm ứngdụng website chạy ở local server trên máy tính xách tay ngườiphát triển tốt người học bao gồm kết nối cảcơ sở dữ liệu
o
Bên cạnh đó, việc mapping volumns webapps ra bênngoài docker host hỗ trợ bọn họ test thử ứng dụngđã xây dựng xong xuôi bằng giải pháp chép gói war vào vào thư mụcmapping này theo qui tắc deploy ứng dụng vào trong web servercontainer
§Chúng ta sẽ thử nghiệm thử, chúng ta sẽ lấy góiqua được build bằng Netbeans trong thư mụcproject web của chúng ta.
·Chúng ta vào thư mục project, đến thưmục dist, chúng ta copy gói war

·Chúng ta dán/paste vào thư mục webapps – volumnsđã maps trong chiếc 42 của tệp tin yml

o
Kết quả gói war được giải nén

o
Và khi chú ý terminal thì chúng ta sẽ thấy ứng dụngđược deploy

o
Chúng ta chạy test thử login, họ sẽ thấykết quả không đúng đắn với lỗi

… và những lỗikhác …
§Đây là các lỗi quá quen thuộc như đãđề cập ở trên về thiếu thư việndriver kết nối DB, về việc điều chỉnhconnection string đến Datasource vì họ đang triển khai ứngdụng vào một hệ thống ở một nơi cụ thểkhác sản phẩm tính chúng ta phát triển
§Các lỗi này cũng đã đưa ra giảipháp khắc phục ở trên với thư mục lib cần phảicó tập tin driver.jar
§Để undeploy ứng dụng, họ chỉ cầnxóa cả gói war và thư mục cùng tên

·Kết quả họ sẽ quan sát thấy trênterminal như sau

Thực hiện việcbuild ứng dụng từ source code của project gồm sẵnthành gói deploy (war file) trước khi nạp service webcontainer docker
·Cách tiếp cận ở trên, bọn họ đang chỉsử dụng môi trường để deploy ứng dụngweb gồm kết nối DB. Tuy nhiên, nếu bọn họ cần thựchiện thêm một yêu thương cầu về việc build project(compile source code cùng đóng gói deploy) thì họ có thể thựchiện bổ sung thêm một stage trước khi tạobuild gói ứng dụng đưa vào file image để webcontainer gồm thể deploy
·Bước chuẩn bị: thay vì chưng chuẩn bịgói war như ở các tiếp cận ở phần trên,chúng ta cần chuẩn bị một project website đã làm cho hoàntất và đã chạy demo thử. Trong bài bác viết này, chúngta sử dụng bài xích ứng dụng đã tất cả sẵn tạiphần nội dung tham khảo ở bên trên để thựchiện việc build cùng deploy ứng dụng
o
Chúng ta mở project website đã làm sẵn và chạyđược bằng Netbeans lên. Ví dụ, shop chúng tôi mở projectweb như sau

o
Chúng ta chọn thực đơn Window/ Chọn Files để mởfile explorer lên

o
Tại cửa sổ Explorer, chúng ta chọn 02thư mục src với web để copy

o
Chúng ta dán/paste nội dung đã copy vào thư mụcsrc của project docker đã tạo sẵn ở các bướctrên

o
Các nội dung cơ bản mang lại việc chuẩn bịthiết lập môi trường deploy, build ứng dụngđã xong. Họ tiến tới bước cấu hìnhservice -docker vào nội dung tiếp theo.
o
Các bước chúng ta thực hiện áp dụngđúng theo 03 bước vào việc thiết lậpservice docker đã nêu ra ở bài 1.
oLưu ý: ở bài bác viết nàynhắm mục đích tiếp cận biện pháp làm cùng cơ chếbuild image của docker đến nên chúng ta đang làm cho qui trình ngượcđể cho quí vị dễ tiếp cận. Thực tếchúng ta bắt buộc copy những file của project docker vào trong ngày trong projectđang phân phát triển để có thể đồng bộcode lên ở trên GIT, cơ mà không cần copy ứng dụng ra vào. Cáchlàm copy từ project dự án vào vào project docker trong bài viếtnày bao gồm thể gây out of date source code
·Bước 1: Chuẩn bị cấu hình
Web Container với việc phân tách công việc thành các giai đoạnthực hiện riêng biệt (stage được tính từcác từ khóa là FROM) để thể hiện đầy đủcác nội dung liên quan đến xây dựng môi trườngtừ việc build mang đến đến lúc deploy vào môi trườngthực thi
1.Thực hiện build ứng dụng thành gói webdeploy (war file) sử dụng ant tool
2.Tạo website Container Image cùng copy gói war đượcbuild vào vị trí xác định của tệp tin image đểcontainer deloy lúc được nạp
o
Chúng ta thực hiện tạo dockerfile với cácnội dung cấu hình thiết lập service container đầtiên trong 03 bước nêu bên trên đó là thiết lập công cụbuild ứng dụng web sau khi đã phân phát triển, cụ thểtrong bài bác này đó là công cụ ant
o
Chúng ta thực hiện tạo dockerfile với têngọi tùy họ muốn với đuôi là Dockerfile. Vào bàiviết này, chúng ta tạm đặt thương hiệu là web.Dockerfile đặttrong thư mục prepare của project docker
o
Chúng ta thực hiện stage 1 với mục tiêubuild và đóng gói ứng dụng deploy với nội dungđược thiết lập trong tệp tin web.Dockerfile nhưsau

o
Chúng ta tra cứu hiểu qua một chút nội dung chúngta vừa cấu hình trong tệp tin Dockerfile ở trên
§Dòng lệnh FROM: chúng ta xác định imagename của công cụ ant tool
·Chúng ta vào trang docker hub và tìm kiếm từ khóa“openjdk-ant” vào ô search, chúng ta nhận được kếtquả như sau

·Chúng ta click vào kmindi/openjdk-ant-docker và xác địnhtag sử dụng

·Chúng ta lựa chọn phiên bản latest.
o
Do họ đang build image và không thực thi imagetrực tiếp để tạo container trực tiếptrên docker, chúng ta lấy giá chỉ trị image name theo cấu trúc môtả là phần phía đằng sau lệnh pull
o
Cụ thể ở đây, bọn họ sẽ lấy kmindi/openjdk-ant-docker:latest
·Như đã đề cập ở nội dungtrên thì quy trình thiết lập service web container của chúngta bao gồm thể nói là bao gồm 03 stage.
o
Mặc định, như theo phong cách lập trình cácstage được thể hiện tuần tự vàđược đánh số từ 0 dẫn đến việctham chiếu ở các stage sau bao gồm thể gây khó hiểu cùng khôngtường minh.
o
Do vậy, chúng ta sử dụng cú pháp AS đểđặt thương hiệu với mục tiêu tham chiếu tùy ý thông quatên ở các stage tiếp theo.
§Câu lệnh WORKDIR giá trị
·Cú pháp WORKDIR được sử dụng để hỗtrợ build image. Khi chỉ định WORKDIR thì những dòng cấuhình sau đó có thể hưởng lợi từ việc chỉđịnh này.
·Cú pháp này sẽ hỗ trợ tốt cho các câu lệnhthao tác với dử liệu file với thực thi lệnh hạnchế việc truy hỏi xuất đường dẫn tuyệtđối như
o
COPY hoặc RUN thì tất cả thể dung đường dẩntương đối với thư mục WORKDIR đểrút gọn câu lệnh.
Xem thêm: Top 5 địa chỉ sửa máy ảnh tận nơi, sửa máy ảnh tận nơi
o
ENDPOINT hoặc CMD cũng gồm thể dung đườngdẩn tương đối núm cho đường dẩntuyệt đối
§Câu lệnh COPY .. .
·Ký hiệu .. Sử dụng để thể hiện copytoàn bộ nội dung thư mục build context
·Ký hiệu .chính là thể hiện thư mụcchỉ định thư mục đang làm việc thông quacú pháp WORKDIR đã nêu ở trên
·Với chỉ định bên trên thì tất cả tấttin build.xml, thư mục src cùng web sẽ copy tới thư mụcbuild
·Chúng ta thực hiện copy tập tin build.xml trongbuild context (chúng ta sẽ cấu hình thư mục này chính làthư mục src vào yml file) vào vào thư mục làm việcở trong file image với cùng tên build.xml
·Chúng ta không thể sử dụng tập tinbuild.xml được phạt sinh trong số IDE tool. Vì những file phátsinh này gồm cấu trúc phức tạp với đang thực hiệnviệc build với deploy ứng dụng theo những biến môitrường cơ mà do thiết yếu tool thiết lập. Còn ở đây,chúng ta đang build ứng dụng theo thư mục mặcđịnh làm cho việc trong tệp tin image. Vì vậy, bọn họ tạotập tin build.xml đặt trong build context với nộidung như sau


·Tên thư mục build trong file ant script trên thiết yếu làthư mục mặc định mà chúng ta đang tiếnhành thiết lập trong file image.
§Câu lệnh RUN < "ant" > tại mẫu 8 củadocker file là cơ chế yêu thương cầu thực thi ant tool vớiviệc đi search tập tin build.xml vào thực mục làmviệc trong tệp tin image cùng thực thi những thiết lậptrong tệp tin script đó
·Nói một bí quyết tổng quát, ant sẽ build những sourcecode java cùng đặt vào thư mục build/classes
·Thực hiện đóng gói war với đúng thànhphần của cấu trúc ứng dụng web với đặttại thư mục dist
§Chúng ta vừa kết thúc stage build với đóng gói mang đến việctriển khai ứng dụng
o
Chúng ta chuyển qua stage 2 với mục tiêu thiếtlập service docker mang lại web container, cụ thể ở đâylà Tomcat Server
§Nội dung này bọn họ đã hiểu qua thông quabước tiếp cận vào phần đầu tiên củabài viết này
§Tại loại code thứ 9 của web.Dockerfile chúng tanhìn thấy cú pháp --from=builder nghĩa là họ đang sửdụng kết quả của stage builder với đườngdẫn chỉ định để copy tệp tin war đếnthư mục chỉ định trong file image
o
Chúng ta vừa xong xuôi dockerfile đế cấuhình service container cho web container với tập lệnh buildvà đóng gói ứng dụng, với thiết lập servicecontainer mang đến tomcat rồi cuối cùng thực hiện chép ứngdụng vào vào thư mục website để khi imageđược nạp vào container thì ứng dụng sẽđược deploy
·Bước 2: Thiết lập service đãđịnh nghĩa vào trong file cấu hình docker-compose.yml
o
Nội dung này đã không cố kỉnh đổi gì so vớinội dung được giới thiệu ở phầntrên của bài xích viết này
·Bước 3 : Thực hiện run dockercompose để bao gồm kết quả
o
Tại màn hình hiển thị terminal vào Microsoft VS Code, bọn họ thựchiện build image bằng lệnh docker-compse build >
§Lưu ý: đường dẫn của terminal phảilà đường dẫn đến thư mục project củachúng ta
§Cấu trúc project của chúng ta hiện nay nhưsau


§Trong bài xích này chúng ta sẽ build service web-container
§Màn hình terminal khi bắt đầu
§Chúng ta nhập lệnh sau dấu nhắc, cụthể docker-compose build web-container
§Chúng ta nhấn enter, bọn họ thấy đượckết quả như sau



§Lỗi phát sinh là do thư mục ứng dụngcủa bọn họ không có thư mục lib theo đúng cấutrúc của gói ứng dụng web bởi vì trong IDE lib đượctích hợp khi nào chúng ta build trong những khi giai đoạn đầuchúng ta chỉ bao gồm copy source code đã phát triển
·Chúng ta thực hiện tạo thư mục libtrong WEB-INF

§Chúng ta thực hiện chạy lại lệnhdocker-compose build web-container

…

…

…

§Kết quả tất cả lỗi với người pháttriển website theo MVC2 của java tất cả lẽ đã gồm thể hiểuđó là thiếu thư viện trong quy trình biên dịch vànhư đã đề cập ở trên những việc thiếtlập mặc định của tool IDE đã tham chiếuđến những thư viện mặc định khi bọn chúng tathực hiện chọn loại project bọn họ cần phạt triểnnhưng lúc thực hiện deploy ứng dụng thì chúng ta cầnphải gồm thư viện kèm theo
·Chúng ta giải quyết vấn đề này bằngcách đi đến
o
Thư mục tải đặt của tomcat với đếnthư mục lib của nó để chép thư viện(đuôi jar) vào trong thư mục lib tuyệt reference trên mạngđể lấy các thư viện build cho servlet webapplication
o
Bên cạnh đó, bọn họ có kết nối DB sửdụng jdbc nên họ cũng phải chép thư việndriver jdbc (file jar) vào thư mục này
o
Ngoài ra trong quy trình làm giao diện, chúng ta có sửdụng JSTL nên chúng ta đến thư mục thiết lập đặt
Netbeans với đi đến thư mục enterprisemodulesextđể lấy 02 thư viện jstl-api.jar và jstl-impl.jar
o
Thư mục lib trong project docker của bọn chúng tađược cập nhật như sau


§Chúng ta thực hiện build image web-container lầnnữa

§Các thành phần thiết lập để ứngdụng được đặt vào thư mục mặcđịnh của web-container đã được chuẩnbị sẵn sàng để khi image được nạpthành container thì ứng dụng cũng được deploysau khi hệ thống được start
·Trong bước này nếu tất cả lỗi xảy rathường là do bug trong những source code lập trình củachúng ta, chúng ta đọc lỗi trên terminal để khắcphục
o
Chúng ta bắt đầu nạp các container bằnglệnh docker-compose up và nhấn enter
§Khởi động nạp những service
….
§Nạp website container và deploy ứng dụng
…
§Nạp cơ sở dữ liệu tươngtự như bài 1

…

…

§Chúng ta kiểm tra bên trên docker desktop, bọn họ sẽ nhậnthấy

§Đây là container có 02 service đang đượcthực thi. Một chiếc là web server container và loại còn lạichính là service cơ sở dữ liệu đang chạy với
DBMS là SQL hệ thống 2017 (nội dung đã được thựchiện ở bài số 1)
§Chúng ta mở vị trí bản đồ volumns của chúng tatương ứng với cấu hình dòng 42 trong file yml,chúng ta sẽ thấy ứng dụng đã đượcdeploy
o
Chúng ta mở trình duyệt và kiểm tra thử vớiđường dẫn http://localhost:8080/My
Web
Applicationvà nhấn enter
§Ứng dụng website đã được deploy vàrun, bọn họ test thử với chức năng login vớiaccount đã thiết lập vào script db trong bài xích 1
·Chúng ta nhập username với password, rồi nhấnenter
·Kết quả bọn họ nhận được
§Chúng ta vừa hoàn thành thêm một giải pháp tiếp cậnvừa build ứng dụng thành gói deploy trước khiđưa vào image file của website container
Các lưu ý trong thừa trìnhthực hiện
·Khi chúng ta thực hiện lệnh docker-build cùng nếucó lỗi xuất hiện như sau

o
Lỗi này xảy ra khi docker desktop chưađược start à chỉcần start lại docker desktop thì sẽ khắc phụcđược lỗi
·Trong quy trình build các image nếu chúng ta, thấy cólỗi tương tự như thế này xảy ra

oĐây là lỗi bởi build repository của docker bịcó issues, rồi click chọn vào troubleshoot

§Chúng ta click chọn Clean/Purge data để xóabuild repository

§Quá trình thực thi sẽ diễn ra

§Chúng ta thực hiện sign in lại vớiaccount của docker thì vấn đề sẽ đượckhắc phục
Chúc mừng quívị đã trả tất việc tiếp cậnbuild một docker image với service cung cấp môi trườngđể deploy ứng dụng web đã phát triển bao gồm kếtnối cùng quản lý cơ sở dữ liệu cùng nạpdữ liệu ban đầu. Môi trường này, bọn họ cóthể triển khai những ứng dụng độc lập vớihệ điều hành của máy vi tính thành viên vào team vàngười học không thể lo lắng trong việc thửnghiệm, tương tác với web server cơ mà không ảnhhưởng đến việc tốn thời gian cài đặt,cấu hình.
Ở bài bác tiếp theo,chúng ta sẽ search hiểu cơ chế vận hành của ứngdụng docker với docker container dựa trên 02 bài thực tiễnchúng ta đã làm cho qua để hiểu cơ chế hoạtđộng và nguyên tắc trong docker để từ đó chúngta tất cả thể tạo ra môi trường tất cả nhiều servicesđể cung cấp sự thuận lợi mang đến thành viên củađội phân phát triển và người học vào việcthử nghiệm công nghệ. Nội dung những bài tiếp theosẽ mô tả tổng quan tiền về cơ chế hoạtđộng của docker, nắm rõ hơn về docker engine,image, container, volumns, giải pháp giao tiếp giữa các container cùng nhiềuvấn đề quan liêu trọng để họ có thể tựthiết kế cùng triển khai các hệ thống phần mềmdự bên trên nền tảng Docker tuyệt Kubernetes.
Hy vọng chủ đểseries này sẽ hỗ trợ quí vị tất cả thể tạo ramôi trường có tác dụng việc nhóm phổ biến cho cả team vào dựán một biện pháp đơn giản nhất khi triển khai haymôi trường nghiên cứu công nghệ mới lẫn môitrường học tập.
Rất mong sựgóp ý tâm thành và phân chia sẻ của quí vị về loạtseries này. Hẹn gặp quí vị ở bài 3tiếp theo trong loạt series
Các môi trường thiên nhiên cho trở nên tân tiến và tiến hành ứng dụng được chia làm 3 loại: development, staging và production. Development là môi trường xung quanh chuyên giành riêng cho phát triển. Production là môi trường thiên nhiên triển khai thực tế. Staging là môi trường xung quanh giả lập gần giống production giành riêng cho thử nghiệm.
Đối với ứng dụng PHP, Apache là trong số những server phổ cập nhất trong môi trường thiên nhiên production. Vị vậy, việc áp dụng Apache trong development và staging là yêu ước tự nhiên.
XAMPP là giữa những cách dễ dàng nhất để thiết lập và cấu hình Apache (và những server khác). Thực tế XAMPP cũng là cỗ server thiết đặt và cấu hình sẵn được sử dụng rất thịnh hành làm môi trường thiên nhiên phát triển áp dụng PHP.
Ngoài ra còn một số cách thuận lợi nữa như sử dụng web server tích đúng theo của PHP hoặc của Php
Storm.
Bài học này sẽ giới thiệu cách thiết lập các môi trường này.
NỘI DUNG CỦA BÀI Ẩn
1. Thiết đặt và thực hiện XAMPP
2. Sản xuất và tầm nã xuất page
3. Xử trí yêu cầu truy xuất tệp tin
4. Thực hiện Php
Storm với Apache
4.1. In-place vps configuration
4.2. Local vps configuration
5. Sử dụng các web hệ thống khác
5.1. Sử dụng web vps tích hợp trong bộ PHP
5.2. áp dụng server tích đúng theo của Php
Storm
5.3. Sử dụng kết hợp Php
Storm project cùng với PHP built-in server
6. Kết luận
Cài đặt và thực hiện XAMPP
Mặc dù PHP rất có thể tích phù hợp với nhiều chương trình web server, Apache vẫn luôn là lựa chọn phổ cập nhất hiện tại nay, đặc biệt là làm môi trường thiên nhiên phát triển vận dụng PHP. Không chỉ vậy, để tạo ra môi trường thực sự cho ứng dụng web, các bạn còn đề nghị đến các server khác ví như My
SQL (server đại lý dữ liệu), Mercury (mail server), Filezilla (FTP server, phục vụ triển khai vận dụng web).
Để hỗ trợ lập trình viên cấp tốc chóng cài đặt môi trường cho cải cách và phát triển ứng dụng, một vài hãng thứ tía xây dựng sẵn các gói vps mã mở.
XAMPP là bộ server được họ sử dụng trong khóa đào tạo này. Bạn tải cỗ cài từ bỏ đường links https://www.apachefriends.org/download.html và thiết đặt như một chương trình windows bình thường. Đơn giản độc nhất vô nhị là sở hữu nó vào folder trên ổ khối hệ thống C:XAMPP.
Trên Windows cũng có một số bộ WAMP thông dụng khác như AMPPS stack (https://ampps.com), WAMP (https://www.wampserver.com). Bọn chúng đều tương tự nhau khi thực hiện cho cách tân và phát triển ứng dụng.
Để làm chủ các server, bạn chạy tệp tin XAMPPxampp-control.exe.
Để chạy ứng dụng PHP bạn phải chạy Apache server (và cả My
SQL sau này). Nhấn vào nút Start khớp ứng của Apache ngơi nghỉ cột Actions.










