Сборка Docker работает на моей машине, но не в Gitlab CI - PullRequest
1 голос
/ 29 апреля 2019

У меня есть приложение Dockerized Typescript NodeJS, и я хочу создать образ Docker из Gitlab CI.

Dockerfile

FROM node:11.13.0-alpine

WORKDIR /usr/src/app/

COPY . .
RUN npm install
RUN npm run build

CMD ["node", "dist/main.js"]

.gitlab-ci.yml

image: ubuntu:bionic

stages:
  - deploy

before_script:
  # OS dependencies
  - apt-get update
  - apt-get install -y gnupg2
  - apt-get install -y software-properties-common

  # Install docker
  - apt install -y docker.io
  - service docker start

  # Install cURL
  - apt-get install -y curl

deploy:
  stage: deploy
  script:
    - docker build -t my_app .
    # more stuff

Если я запускаю docker build -t my_app . в моей локальной Mac OS , все работает нормально. Но в Gitlab CI ( Ubuntu ) он выдает эти ошибки на шаге RUN npm run build:

src/contact/contact.mapper.ts(1,25): error TS2307: Cannot find module './contact'.
src/contact/contact.repository.ts(2,25): error TS2307: Cannot find module './contact'.
src/contact/contact.resolver.ts(3,25): error TS2307: Cannot find module './contact'.
...

Версии Docker одинаковы в Gitlab CI и в моей локальной системе. Нужно ли что-то еще, чтобы это работало в Ubuntu (образ бегуна Gitlab CI)?

ПРИМЕЧАНИЕ. Я знаю, что Docker в Docker можно использовать в Gitlab CI, но по некоторым причинам мне нужно установить Docker вручную.

Редактировать

Кроме того, если я запускаю npm run build на своем локальном компьютере (используя Node v11.13.0, той же версии, что и Dockerfile), это тоже работает.

EDIT

Я только что запустил docker built -t my_app . на машине с Ubuntu (используя виртуальную машину Vagrant), и она не работает. Так что, определенно, эта ошибка связана с операционной системой. Он работает в Mac OS, но не в Ubuntu.

1 Ответ

0 голосов
/ 02 мая 2019

Наконец-то я нашел ошибку. Файл на самом деле назывался Contact.ts, а не contact.ts. Кажется, что в Mac OS, в отличие от Ubuntu, пути нечувствительны к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...