При установке NPM во время сборки происходит сбой сборки Docker - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь заставить GitLab CI runner собрать свой проект из образа Docker и установить пакет NPM во время сборки. Мой .gitlab-ci.yml файл был вдохновлен этой темой Gitlab CI с Docker и NPM , где ПО занималось идентичной проблемой:

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 test также не может быть запущен:

$ 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 голосов
/ 18 октября 2019

image: node:8 это изображение не основано на альпийском, поэтому в результате вы получили ошибку

apk: команда не найдена

node:<version>

Это кодовые имена набора для выпусков Debian и указывают, на каком выпуске основан образ. Если вашему образу необходимо установить какие-либо дополнительные пакеты помимо того, что поставляется с этим образом, вы, вероятно, захотите явно указать один из них, чтобы минимизировать поломку при появлении новых выпусков Debian .

просто замените образ на

node:alpine

и он должен работать.

Вторая ошибка в том, что не установлен docker-compose.

Вы можете проверьте этот ответ для более подробной информации о композиторе.

...