logo

Crowdly

Околина за решавање: Ubuntu | Playgrounds | Killercoda Потребно е да се изв...

✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.

Околина за решавање:

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;5

TV;$1500;6

Microwave;$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();

}

}

}

Більше питань подібних до цього

Хочете миттєвий доступ до всіх перевірених відповідей на courses.finki.ukim.mk?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!