Докер и Трэвис Чи Фалинг на билде - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь докернизировать мое приложение как часть travis ci, чтобы затем я мог опубликовать его в docker hub:

Я настроил свой Dockerfile, docker-compose и travis.yml, когда конвейер в githubпо окончании я получаю это сообщение об ошибке:

0.60s$ docker run mysite /bin/sh -c "cd /root/mysite; bundle exec rake test"
/bin/sh: 1: cd: can't cd to /root/mysite
/bin/sh: 1: bundle: not found
The command "docker run mysite /bin/sh -c "cd /root/mysite; bundle exec rake test"" failed and exited with 127 during .

Мой Dockerfile:

#Server
FROM node:latest

#create app dir in the container
RUN mkdir -p /usr/src/app

#sets working direcotry for the app
#this allows to run all the comand
#like RUN CMD etc.
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm config set strict-ssl false
RUN npm install

# Bundle app source
COPY . .

EXPOSE 3006

CMD [ "npm", "run", "start:unsafe" ]

Docker-compose:

version: '3'
services:
  web:
    build: .

travis.yml:

sudo: required

    language: node_js

node_js:
  - "stable"

services:
  - docker

before_install:
  - docker build -t mysite .
  - docker run -d -p 127.0.0.1:80:4567 mysite /bin/sh -c "cd /root/mysite; bundle exec foreman start;"
  - docker ps -a
  - docker run mysite /bin/sh -c "cd /root/mysite; bundle exec rake test"
cache:
  directories:
    - node_modules    
script:
  - bundle exec rake test
  - npm test
  - npm run build

Я попытался запустить команды из travis yml локально и получил ту же ошибку:

/bin/sh: 1: cd: can't cd to /usr/src/app/mysite
/bin/sh: 1: bundle: not found

Я попытался войти в контейнер, чтобы увидеть, совпадают ли их каталоги, но контейнер всегда выходит сразу после него.начинается

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Вы можете перепутать node_js и ruby. Перепишите свой .travis.yml на что-то вроде:

sudo: required
language: node_js
node_js: 
  - "stable"
cache:
  directories:
    - "node_modules"
services:
  - docker
before_install:
  - docker build -t mysite:travis-$TRAVIS_BUILD_NUMBER .
script:
  - npm test
  - npm run build
  - docker images "$DOCKER_USERNAME"/mysite
after_success:
  - if [ "$TRAVIS_BRANCH" == "master" ]; then
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
    docker tag mysite:travis-$TRAVIS_BUILD_NUMBER "$DOCKER_USERNAME"/mysite:travis-$TRAVIS_BUILD_NUMBER;
    docker push "$DOCKER_USERNAME"/mysite:travis-$TRAVIS_BUILD_NUMBER;
fi
0 голосов
/ 15 июня 2019

чтобы выполнить команду в существующем запущенном контейнере, вы должны вызвать 'docker exec', а не 'docker run'

...