Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
FROM node:12 as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm install --silent
RUN npm install @vue/cli -g
COPY . /app
RUN npm run build
FROM nginx:1.16.0-alpine
COPY --from=build /app/dist /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Для разработки можно добавить маппинг к соурс коду
Да, согласен. Но в случае с языками типа python ребилд понадобится, когда изменились зависимости (requirements.txt или аналог). Благо это случается не каждый день
Поэтому — ребилд надёжнее и больше рекомендуется
Ваша конфигурация тоже не очень подходит для продакшена. Нужно сохранять package-lock.json и использовать npm ci вместо npm install.
FROM node:lts-alpine AS build
WORKDIR /build
COPY . .
ARG VUE_APP_BASE_DOMAIN
ARG VUE_APP_ROLLBAR_TOKEN
ARG VUE_APP_ROLLBAR_ENV
RUN set -x && \
yarn install && \
yarn build
FROM nginx:stable-alpine
# for local builds; will be overrided by heroku
ENV PORT="80"
COPY --from=build /build/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
# ignored for heroku
EXPOSE ${PORT}
ENTRYPOINT ["entrypoint.sh"]
CMD [ "nginx","-g", "daemon off;"]
#!/bin/sh
set -xe
echo "DEBUG: Docker - entrypoint init"
echo "DEBUG: Nginx port is ${PORT}"
echo "DEBUG: changing port in config"
sed -i "s/CHANGEME_NGINX_PORT/${PORT}/" /etc/nginx/nginx.conf
# exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
Куча вопросов.
И коли уж такая пьянка, то для локальной разработки лучше DOKKU подходит, чем эти костыли из докер + компоуз
Как упаковать VueJS + NodeJS + MongoDB приложение в Docker