From 9a6d7a7799e1ece709e214cafbf1eafaab71f7fb Mon Sep 17 00:00:00 2001 From: Anton Skalkin Date: Mon, 22 Apr 2024 13:04:31 +0400 Subject: [PATCH] first commit --- Dockerfile | 29 ++++++++++++++++++++ docker-compose.service | 13 +++++++++ docker-compose.yml | 22 +++++++++++++++ Шпаргалка по Docker.sh | 45 +++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.service create mode 100644 docker-compose.yml create mode 100644 Шпаргалка по Docker.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7765cf6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# образ с JDK +FROM eclipse-temurin:17 +# обновление пакетов, установка git +RUN apt-get update && apt-get install -y git + +# клонирование репозитория проекта +RUN git clone https://git.athene.tech/is.ulstu.ru/os-test-app /opt/WebProject + +# выдача прав gradlew +RUN chmod +x /opt/WebProject/gradlew + +# установка Gradle +RUN apt-get install -y gradle + +# установка окружения (рабочей директории) для проекта +WORKDIR /opt/WebProject + +# сборка проекта с помощью gradle +RUN ./gradlew build + +# переменные окружения приложения +ENV DB_HOST=db +ENV DB_PORT=5432 +ENV DB_USER=user +ENV DB_PASSWORD=password +ENV DB_NAME=dbname + +# запуск приложения при запуске контейнера +CMD ["./gradlew", "bootRun", "-Prod"] diff --git a/docker-compose.service b/docker-compose.service new file mode 100644 index 0000000..2cb8ac7 --- /dev/null +++ b/docker-compose.service @@ -0,0 +1,13 @@ +[Unit] +Description=Some personal Docker containers +After=docker.service +Requires=docker.service + +[Service] +Type=oneshot +RemainAfterExit=yes # чтобы считать службу активной после завершения процесса +ExecStart=docker compose -f /opt/project/docker-compose.yml up --detach +ExecStop=docker compose -f /opt/project/docker-compose.yml stop + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2ebd3fb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.8' + +services: + app: + image: ujijrujijr/os_lab5 + #build: . # для сборки проекта из соседнего Dockerfile + ports: + - "8081:8080" + depends_on: + - db + + db: + image: postgres:13 + environment: + - POSTGRES_USER=user + - POSTGRES_PASSWORD=password + - POSTGRES_DB=dbname + volumes: + - db-data:/var/lib/postgresql/data + +volumes: + db-data: diff --git a/Шпаргалка по Docker.sh b/Шпаргалка по Docker.sh new file mode 100644 index 0000000..5ee9ad4 --- /dev/null +++ b/Шпаргалка по Docker.sh @@ -0,0 +1,45 @@ +# справочная информация +docker --help # список доступных команд +docker --help # информация по команде + +docker --version # версия Docker +docker info # общая информация о системе + +# работа с образами +docker search debian # поиск образов по ключевому слову debian + +docker pull ubuntu # скачивание последней версии (тег по умолчанию latest) официального образа ubuntu (издатель не указывается) из репозитория по умолчанию docker.io/library +docker pull prom/prometheus # скачивание последней версии (latest) образа prometheus от издателя prom из репозитория docker.io/prom +docker pull docker.io/library/ubuntu:18.04 # скачивание из репозитория docker.io официального образа ubuntu с тегом 18.04 + +docker images # просмотр локальных образов + +docker rmi : # удаление образа. Вместо : можно указать . Для удаления образа все контейнеры на его основе должны быть как минимум остановлены +docker rmi $(docker images -aq) # удаление всех образов + +# работа с контейнерами +docker run hello-world # Hello, world! в мире контейнеров +docker run -it ubuntu bash # запуск контейнера ubuntu и выполнение команды bash в интерактивном режиме +docker run --name docker-getting-started --publish 8080:80 docker/getting-started # запуск контейнера gettind-started с отображением (маппингом) порта 8080 хоста на порт 80 внутрь контейнера +docker run --detach --name mongodb docker.io/library/mongo:4.4.10 # запуск контейнера mongodb с именем mongodb в фоновом режиме. Данные будут удалены при удалении контейнера! + +docker ps # просмотр запущенных контейнеров +docker ps -a # просмотр всех контейнеров (в том числе остановленных) +docker stats --no-stream # просмотр статистики + +docker start alpine # создание контейнера из образа alpine + +docker start # запуск созданного контейнера. Вместо можно указать +docker start $(docker ps -a -q) # запуск всех созданных контейнеров + +docker stop # остановка контейнера. Вместо можно указать +docker stop $(docker ps -a -q) # остановка всех контейнеров + +docker rm # удаление контейнера. Вместо можно указать +docker rm $(docker ps -a -q) # удаление всех контейнеров + +# система +docker system info # общая информация о системе (соответствует docker info) +docker system df # занятое место на диске +docker system prune -af # удаление неиспользуемых данных и очистка диска +