# Dockerfile для приложения HelloFIRPO

#### Задание:

3\. В домашней директории хоста создайте файл name.txt и запишите в него строку experts.

4\. Напишите Dockerfile для приложения HelloFIRPO.

* 1\. В качестве базового образа используйте alpine
* 2\. Сделайте рабочей директорию /hello и скопируйте в неё name.txt
* 3\. Контейнер при запуске должен выполнять команду echo, которая выводит сообщение "Hello, FIRPO! Greetings from " и затем содержимое файла name.txt, после чего завершать свою работу

5\. Соберите образ приложения App и загрузите его в ваш Registry.

* 1\. Используйте номер версии 1.0 для вашего приложения
* 2\. Образ должен быть доступен для скачивания и дальнейшего запуска на локальной машине.

#### Выполнение:

* Создаём в домашней директории из под пользователя **altlinux** файл **name.txt** и записываем в него строку **experts**:

```
echo  "experts" > ~/name.txt
```

* Создаём **Dockerfile** для приложения **HelloFIRPO**:

```
vim Dockerfile
```

* * содержимое:

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image.png)

где:

**FROM** - задаёт базовый образ;

**WORKDIR** - задаёт рабочию директорию внутри контейнера;

**COPY** - копирует файл с локального хоста в рабочию директорию контейнера;

**CMD** - определяем команду, которую необходимо будет выполнить после запуска контейнера, после чего контейнер будет остановлен

* Выполняем сборку образа:
  * **-t** - позволяет присвоить имя собираемому образу;
  * "**.**" - говорит о том что **Dockerfile** находится в текущей директории откуда выполняется данная команда и имеет имя именно **Dockerfile:**

```
docker build -t app .
```

* * результат:

<img src="https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%283%29.png" alt="" height="419" width="873">

* Проверяем:
  * наличие собранного образа:

```
docker images
```

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%284%29.png)

* * запуск контейнера, что он выводит необходимое содержимое:

```
docker run --name HelloFIRPO app
```

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%285%29.png)

* Удаляем контейнер:

```
docker rm HelloFIRPO
```

* загружаем образ собранный из **Dockerfile** в локальной **DockerRegistry**:
  * присваиваем тег для размещения образа в локальном Docker Registry:

```
docker tag app localhost:5000/app:1.0
```

* * Загружаем образ в локальный Docker Registry:

```
docker push localhost:5000/app:1.0
```

* * * Результат:

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%286%29.png)

* Проверяем:
  * наличие образа:

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%287%29.png)

* * и возможность загрузки из локального Docker Registry:
    * перед - удаляем образы localhost:5000/app:1.0 и app:

```
docker rmi localhost:5000/app:1.0 app
```

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%288%29.png)

* * загружаем образ приложения **HelloFIRPO** из локального Docker Registry:

```
docker pull localhost:5000/app:1.0
```

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%289%29.png)

* Также проверяем возможность запуска приложения из скаченного образа из локального репозитория:

```
docker run --name HelloFIRPO localhost:5000/app:1.0
```

![](https://sysahelper.ru/pluginfile.php/305/mod_page/content/2/image%20%2810%29.png)

Последнее изменение: пятница, 16 февраля 2024, 10:08


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://seraphim.gitbook.io/volodyazetkin2024gitbook/modul-v.-docker-compose-sozdanie-lokalnogo-docker-registry/dockerfile-dlya-prilozheniya-hellofirpo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
