✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.
Ubuntu | Playgrounds | Killercoda
Потребно е да се изврши nginx контејнеризација брз база на Debian основа debian:11-slim и да се овозможи хостирање на дадената датотека именувана како products.txt. Следете ги следните чекори еден по еден:
1. Контејнеризацијата направете ја преку интерактивен режим. Именувајте ја новата Docker слика како nginx-product-host-i.
2. Креирајте и стартувајте нов контејнер nginx-product-host-i-container врз база на новокреираната слика. Овозможете портата 80 на контејнерот да биде достапна преку порта 8080 на домаќинот. По стартувањето, проверете дали контејнерот е активен и дали портите се успешно мапирани.
3. Повторете го креирањето на Docker Image на nginx брз база на Debian основа debian:11-slim, но сега преку Dockerfile. Именувајте ја сликата како nginx-product-host.
4. Креирајте контејнер од новокреираната слика, именувајте го како nginx-product-host-container и овозможете портата 80 на контејнерот да биде достапна преку порта 8081 на домаќинот. По стартувањето, проверете дали контејнерот е активен и дали портите се успешно мапирани.
5. Рачно ископирајте ја датотеката products.txt од хостот во фолдерот /var/www/html/ на двата контејнери (nginx-product-host-container, nginx-product-host-i-container) со помош на командата docker cp.
6. Со помош на една од командите wget или curl во домаќинот проверете дали датотеката products.txt е достапна на двете локации http://localhost:8080/products.txt и http://localhost:8081/products.txt. Доколку е успешно, повиците треба да вратат HTTP статус код 200 и да ја преземат датотеката локално во локалниот именик, доколку не е поставена опцијата -o.
7. Доколку претходните чекори успешно ги имплементиравте, направете стопирање и отстранување на двата контејнери nginx-product-host-container и nginx-product-host-i-container.
8. Креирајте нов именик во домаќинот именуван како html. Ископирајте ја датотеката products.txt во новокреираниот именик.
9. Креирајте и стартувајте го контејнерот nginx-product-host-container, но сега потребно е да мапирате volume на тој начин што новокреираниот именик кај домаќинот html ќе се мапира на патеката /var/www/html/ кај контејнерот.
- внимавајте да не ги заборавите при стартување да овозможете портата 80 на контејнерот да биде достапна преку порта 8081 на домаќинот
10. Проверете дали датотеката е достапна на локација http://localhost:8081/products.txt.
11. Потребно е да се контејнеризира Java апликацијата (ProductsManagement.java) со помош на Dockerfile. Апликацијата овозможува преглед на содржината на датотеката products.txt на попрегледен начин со тоа што ја изминува линија по линија и ги печати сите ќелии во рамки на редицата. Секоја ќелија е одделена со точка-запирка (;).
12. Изградете нова Docker слика врз база на новокреираниот Dockerfile со име products-viewer.
13. При стартувајте, направете мапирање на volume со тоа што именикот кај домаќинот html ќе се мапира на патеката /var/www/html/ кај контејнерот. Името на контејнерот нека биде products-viewer-container.
14. Проверете дали листањето на продуктите преку Java апликацијата е успешно.
15. Изменете го Java кодот, со што променливата path ќе се исчитува од опкружувачката променлива PRODUCT_FILE_PATH.
16. Стопирајте и отстранете го контејнерот products-viewer-container и стартувајте го пак со тоа што ќе ја додадете вредност на опкружувачката променлива PRODUCT_FILE_PATH со помош на опцијата -e кај docker run командата.
17. Проверете дали успешно ќе се излистаат продуктите во датотеката.
Излезот од извршувањата на сите команди го ставате во формата подолу.
products.txt
Fridge;$600;5TV;$1500;6Microwave;$200;10
ProductsManagement.java
import java.io.*;public class ProductsManagement { public static void main(String[] args) { String path = "/var/www/html/products.txt"; BufferedReader reader = null; String line = null; try { reader = new BufferedReader(new InputStreamReader(new FileInputStream(path))); while ((line = reader.readLine())!=null) { String[] cells = line.split(";"); if (cells.length != 3) { throw new RuntimeException("Invalid row!"); } System.out.printf("Product Name: %s\n", cells[0]); System.out.printf("Product Price: %s\n", cells[1]); System.out.printf("Product Quantity: %s\n", cells[2]); System.out.println("\n"); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!