Skip to content

Instantly share code, notes, and snippets.

@bigslycat
Created August 27, 2018 14:58
Show Gist options
  • Select an option

  • Save bigslycat/07a33b3a3e066a592f26079fb28d5138 to your computer and use it in GitHub Desktop.

Select an option

Save bigslycat/07a33b3a3e066a592f26079fb28d5138 to your computer and use it in GitHub Desktop.

Revisions

  1. bigslycat created this gist Aug 27, 2018.
    32 changes: 32 additions & 0 deletions Dockerfile
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    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/* — ассеты кешируются навсегда.