Skip to content

Instantly share code, notes, and snippets.

@bigslycat
Created August 27, 2018 14:58
Show Gist options
  • Save bigslycat/07a33b3a3e066a592f26079fb28d5138 to your computer and use it in GitHub Desktop.
Save bigslycat/07a33b3a3e066a592f26079fb28d5138 to your computer and use it in GitHub Desktop.
FROM node:10.9.0-alpine as builder
# Это мы отнаследовались от образа ноды на базе Альпайн-линукса,
# и она у на сейчас просто есть, и мы можем запускать её как в
# процессе билда, так и при запуске контейнера из этого образа.
# Так же мы этот этап сборки обзываем "builder", а зачем — узнаем ниже.
# Задаём рабочую дирректорию по умолчанию
WORKDIR /app
# Добавляем в образ текущуу директорию хост-системы
# ADD <директория хоста> <директория в образе>
ADD ./ ./
# Устанавливаем, собираем (хз, какие у тебя команды там)
RUN yarn install --production && yarn build
# Но для того, чтобы хостить статику, нам не нужна нода. Она нам нужна только для сборки.
# А для того, чтобы всё красиво запускать, нам нужен другой образ:
FROM bigslycat/spabox
# Это образ nginx на базе того же Альпайн линукса.
# Когда мы объявляем, эту конструкцию, всё предыдущее уничтожается.
# Снова задаём рабочую дирректорию по умолчанию
WORKDIR /app
# Но нам нужны результаты нашего билда, и мы копируем их из предыдущего этапа — этапа сборки
# COPY --from=<имя этапа> /app/<дирректория с билдом> ./static
COPY --from=builder /app/build ./static
# Всё. Но тебе нужно учитывать определённые вещи:
# - То, что ты получаешь по запросу на урл /, не кешируется никогда, кроме:
# - /assets/* — ассеты кешируются навсегда.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment