Dockerfile, создание docker image.
Dockerfile
Представим, приложение уже работает на вашей машине но еще не имеет образа. Для того, чтобы получить docker образ, нам необхдимо описать его.
Создадим инструкцию для сборки образа.
В папке с проектом(мы рассматриваем node проект) создадим файлы:
touch Dockerfile
Для того, чтобы в докер не попапил ненуженые нам файлы, рядом создадим dockerignore и впишем в него всё что нам не нужно.
touch .dockerignore
Пример Dockerfile:
#Выберем базовый образ из которого мы будем создавать наш проект
FROM node:10-apline
# Укажем папку внутри докера, которая будет является домашней при выполнении различных команд
WORKDIR /usr/src/app
# Скопируем из папки с проектом все файлы по маске package*.json в папку WORKDIR
COPY package*.json ./
# Запускаем установку пакетов npm
RUN npm install
# Копируем всё что осталось в папке с проектом в папку WORKDIR
COPY . .
# Указываем порт, через который будет доступен наш проект
EXPOSE 3000
# Указываем команду которая будет работать в тот момент кога запустится контейнер.
CMD["npm", "start"]
Список ключей используемых при создании образа
docker build используюя ключ --build-arg <varname>=<value>
Билдим проект
Создаем билд с помощью команды.
docker build . -t firstimage
Ожидаем заверешения команды. Для этого может потребоваться много времени.
В случае если билд завершился неудачно, смотрим что за ошибка и правим Dockerfile
После завершения мы можем посмотреть на наш firstimage в списке который можно получить с помощью команды:
docker image
Запуск нашего проекта
Чтобы запустить наш проект на необхдимо указать несколько параметров
docker run -p 80:3000 firstimage
-p - говорит о том, что мы мапируем системный 80 порт в порт(помните внутри контейнера использовали EXPOSE 3000) внутри контейнера.
Заходим на http://localhost и убеждаемся что наше приложение доступно внутри контенйера.