Docker构建可以在我的机器上运行,但不能在Gitlab CI中运行

时间:2019-04-29 15:08:33

标签: node.js docker gitlab

我有一个Dockerized Typescript NodeJS应用程序,我想从Gitlab CI构建Docker映像。

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

如果我在本地的 Mac OS 中运行docker build -t my_app .,一切正常。但是在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相同的版本),它也可以工作。

编辑

我刚刚在Ubuntu计算机(使用Vagrant虚拟机)中运行docker built -t my_app .,但是它不起作用。因此,绝对该错误与操作系统有关。它可以在Mac OS上运行,但不能在Ubuntu上运行。

1 个答案:

答案 0 :(得分:0)

最后,我发现了错误。文件实际上被命名为Contact.ts,而不是contact.ts。似乎在Mac OS中,与Ubuntu不同,路径不区分大小写。