У меня есть приложение 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.