# Приложение app1

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

2\. Подготовьте web-приложение App1

* 1\. Скачайте файлы app1.py и Dockerfile по адресу:
  * <https://github.com/auteam-usr/moscow39>
* 2\. Соберите образ приложения и загрузите его в любой репозиторий Docker на ваше усмотрение.

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

**ControlVM:**

* Устанавливаем **git**:

```
sudo apt-get install -y git
```

* Клонируем репозиторий по ссылке с задания:

```
git clone 
```

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

  ```
  <figure><img src="/files/JGs9C0vW8MxwJ0J2xBgK" alt=""><figcaption></figcaption></figure>
  ```

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

* Переходим в директорию **moscow39**:

```
cd moscow39
```

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

```
docker build -t app1 .
```

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

  ```
  <figure><img src="/files/9FSZEohRIqCNfRmVsn9O" alt=""><figcaption></figcaption></figure>
  ```

<img src="https://sysahelper.ru/pluginfile.php/311/mod_page/content/2/image%20%281%29.png" alt="" height="509" width="903">

* Проверяем:

  * наличие собранного образа:
  *

  ```
  <figure><img src="/files/xxU75WLMTsVELsjWLHKG" alt=""><figcaption></figcaption></figure>
  ```

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

* загружаем образ собранный из **Dockerfile** в свой аккаунт на **hub.docker.com**:

  * переходим в свой аккаунт **на hub.docker.com** - нажимаем **Repositories -> Create** задаём **Repository Name** и нажимаем **Create**:
  *

  ```
  <figure><img src="/files/EgD9y6YJ4nnZLuTZobjf" alt=""><figcaption></figcaption></figure>
  ```

<img src="https://sysahelper.ru/pluginfile.php/311/mod_page/content/2/image%20%285%29.png" alt="" height="374" width="833">

* * Далее переходим в настройки аккаунта на вкладку **Security** и нажимаем **NewAccess Token**:
  *

  ```
  <figure><img src="/files/yXbsTbBRhKlI16PZAzIN" alt=""><figcaption></figcaption></figure>
  ```

<img src="https://sysahelper.ru/pluginfile.php/311/mod_page/content/2/image%20%286%29.png" alt="" height="370" width="836">

* * вводим имя для **Access Token** и нажимаем **Generate**:
  *

  ```
  <figure><img src="/files/m4FRwGkWagoeBFNZdcfV" alt=""><figcaption></figcaption></figure>
  ```

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

* * нажимаем **Copy and Close**:
  *

  ```
  <figure><img src="/files/ABkQznYYGQ6T0FrykE2a" alt=""><figcaption></figcaption></figure>
  ```

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

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

    ```
    <figure><img src="/files/P7RLFg8xaze7c2D5xvi1" alt=""><figcaption></figcaption></figure>
    ```

<img src="https://sysahelper.ru/pluginfile.php/311/mod_page/content/2/image%20%2810%29.png" alt="" height="293" width="746">

* * на **ControlVM** выполняем вход в свой аккаунт на hub.docker.com на основе логина и только что соданного и скопированного токена:

```
docker login -u newerr0r
```

* * * в качестве пароля передаём содержимое скопированного токена
    *

    ```
    <figure><img src="/files/qOBoYMtD8sBetGIwVj8F" alt=""><figcaption></figcaption></figure>
    ```

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

* * присваиваем тег собранному образу:

```
docker tag app1 newerr0r/app1:1.0
```

* * загружаем в наш аккаунт:

```
docker push newerr0r/app1:1.0
```

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

    ```
    <figure><img src="/files/oqs5OawQL4ufGqdjM86R" alt=""><figcaption></figcaption></figure>
    ```

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

* * также проверяем в веб-интерфейсе в своём аккаунте:
  *

  ```
  <figure><img src="/files/5bf0ztPQTOkdZMAOmzY4" alt=""><figcaption></figcaption></figure>
  ```

<img src="https://sysahelper.ru/pluginfile.php/311/mod_page/content/2/image%20%2813%29.png" alt="" height="385" width="877">


---

# 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/controlvm/prilozhenie-app1.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.
