Данный репозиторий содержит пример сборки и работы с образами Docker.
Заместо тысячи слов. Надеюсь всё будет понятно :) https://docs.docker.com/engine/install/ubuntu/ В файле Dockerfile находится скрипт сборки образа для Docker. Весь код:
FROM ubuntu:latest
LABEL maintainer="gc986"
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y openjdk-11-jdk
COPY KtorTest ./server
CMD cd server && ./gradlew run
Разберём всё построчно:
FROM ubuntu:latest Тег FROM, указывает базовый образ, на основе которого всё и будет строиться. За основу взят образ Ubuntu, причём самой последней версии которая есть в публичном репозитории Docker, об этом говорит надпись latest. При этом, можно точно указывать необходимую версию начального образа, например так "FROM ubuntu:18.04"
LABEL maintainer="gc986" Тег LABEL предназначен для указания различных информационных меток, которые в дальнейшем будут определять данный образ. Метки могут быть совершенно разными.
RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y openjdk-11-jdk
Тег RUN предназначен для запуска команд во время создания образа. Обычно с помощью этой команды доустанавливают пакеты необходимые для дальнейшей работы. В данном примере выполняются три команды, одна за другой: обновление репозитория, обновление системы, установка Java. Обратите внимание на ключ -y, он необходим чтобы соглашаться с вопросами которые могут возникнуть при установки пакетов. Если этого ключа не будет, то во время установки пакета не будет возможности принимать какие то условия (часто система стпрашивает пользователя, согласен ли он установить большой объём пакетов).
COPY KtorTest ./server Тег COPY копирует указанную папку в рабочий каталог. COPY A B - копируем A в B. Причём, если папка назначения не существует, то она будет создана автоматически.
CMD cd server && ./gradlew run Тег CMD необходим для запуска команд у запущенного контейнера. Эти команды не выполняются на этапе создания образа, в отличии он RUN. В частности в данном случае, происходит переход в папку проекта KtorTest и запуск gradlew файла с ключём run, который производит сборку проекта с последующим запуском.
Чтобы собрать образ, нужно в корне проекта (где находится файл Dockerfile) выполнить команду: docker build . -t test-image Образ будет создан и помещён в локальный репозиторий. Образ запускается с помощью команды: docker run --name KTor -p 8080:8080 test-image Помимо запуска образа test-image, данная команда перебрасывает порты которые будут запущены в контейнере, на порты локальной машины (-p 8080:8080). Ещё, нзначается имя для запущенного контейнера (--name KTor). docker-compose необходим для запуска большого количества связанных контейнеров. По хорошему, все контейнеры должны запускаться с помощью docker-compose. sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose Чтобы настроить исполнитель docker-compose, нужно создать файл docker-compose.yaml