在构建期间安装NPM会使Docker构建失败

时间:2019-10-17 20:52:10

标签: docker gitlab-ci

我正在尝试让GitLab CI运行程序从Docker映像构建我的项目,并在构建过程中安装NPM软件包。我的.gitlab-ci.yml文件受此主题Gitlab CI with Docker and NPM的启发,在该主题中,PO正在处理相同的问题:

image: docker:stable

services:
  - docker:dind

stages:
  - build

cache:
  paths:
    - node_modules/

before_script:
  - export REACT_APP_USERS_SERVICE_URL=http://127.0.0.1

compile:
  image: node:8
  stage: build
  script:
    - apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
    - pip install docker-compose
    - docker-compose up -d
    - docker-compose exec -T users python manage.py recreate_db
    - docker-compose exec -T users python manage.py seed_db
    - npm install
    - bash test.sh


after_script:
  - docker-compose down

可悲的是,该解决方案效果不佳,但是我觉得我现在离实际的解决方案还差一点。在构建过程中出现两个错误:

/bin/bash: line 89: apk: command not found
Running after script...
$ docker-compose down
/bin/bash: line 88: docker-compose: command not found

如何解决此问题?

编辑:

image: docker:stable

services:
  - docker:dind

stages:
  - build
  - test

before_script:
  - export REACT_APP_USERS_SERVICE_URL=http://127.0.0.1

compile:
  stage: build
  script:
    - apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
    - pip install docker-compose
    - docker-compose up -d
    - docker-compose exec -T users python manage.py recreate_db
    - docker-compose exec -T users python manage.py seed_db

testing:
  image: node:alpine
  stage: test
  script:
    - npm install
    - bash test.sh


after_script:
  - docker-compose down

我将测试移到了单独的阶段testing中,无论如何我应该这样做,并且我发现我已经在那里定义了映像以将其与构建阶段分开。不用找了。找不到Docker,也无法运行bash测试:

$ bash test.sh
/bin/sh: eval: line 87: bash: not found
Running after script...
$ docker-compose down
/bin/sh: eval: line 84: docker-compose: not found

1 个答案:

答案 0 :(得分:0)

image: node:8此图片不是基于高山的,因此,您出错了

  

apk:找不到命令

node:<version>

  

这些是 Debian版本的套件代码名称,并表示   图像基于哪个版本。如果您的映像需要安装   除了图片随附的任何其他软件包,您将   可能希望明确指定其中之一以最大程度地减少破损    Debian 的新版本。

只需将图片替换为

node:alpine

它应该可以工作。

第二个错误是因为未安装docker-compose。

您可以check this answer了解有关作曲家的更多详细信息。