Сборка npm не работает должным образом в докере под Ubuntu - PullRequest
2 голосов
/ 14 мая 2019

У меня есть следующий Dockerfile (создание приложения Vue.js):

# build stage
FROM node:lts-alpine as build-stage
RUN apk add gettext libintl
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ARG API_URL
RUN envsubst < ./src/config.js.tmpl > ./src/config.js
RUN ls
RUN npm run build
RUN ls

# production-stage
FROM nginx:stable-alpine as production-stage
ARG API_PROXY_PATH
ARG SERVER_NAME
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY ./nginx/prod.conf.tmpl /temp/prod.conf.tmpl
RUN envsubst '$API_PROXY_PATH $SERVER_NAME' < /temp/prod.conf.tmpl > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Это прекрасно работает на моей машине с Windows (с Docker Toolbox) и на машине Centos7. Приложение строится и работает нормально.

Но когда я пытаюсь собрать это на сервере с Ubuntu 18.04 (также пытался 16.04), npm run build, кажется, не работает правильно. Он работает как обычно и не выдает никаких ошибок, но после того, как папка build dist отсутствует, и, следовательно, второй этап завершается неудачно.

На рабочем столе Windows и Centos вторая команда ls показывает следующее:

Dockerfile
README.md
babel.config.js
dist
nginx
node_modules
package-lock.json
package.json
public
src

Но в Ubuntu dist папка не появляется.

Dockerfile
README.md
babel.config.js
nginx
node_modules
package-lock.json
package.json
public
src

Версии Docker и docker-compose совпадают. Почему это происходит и как это исправить? Понятия не имею :( Спасибо заранее.

UPD : Я пытался создать сервер Centos, и он показывает то же поведение (папка dist не создается), хотя на рабочем столе Centos он работает нормально. В обоих случаях код был получен из github через git clone. Так что, вероятно, это не проблема ОС.

UPD2 : Происходят очень странные вещи. Я проверял это везде, где мог и не смог воспроизвести, поэтому я предполагаю, что проблема как-то связана с моим поставщиком VPS. Сборка отлично работает на рабочем столе Windows (Docker Toolbox), рабочем столе Centos7, Ubuntu Desktop в VirtualBox и Ubuntu Server в VB, а также на виртуальной машине другого поставщика VPS. Он просто не работает на VPS (как Ubuntu, так и Centos7) от моего первоначального VPS-провайдера. Я собираюсь связаться с их поддержкой.

Репозиторий для воспроизведения: https://github.com/DanielTitkov/pagie Он может быть собран с помощью docker-compose, как есть, только .env.dist должен быть переименован в .env

...