繁体   English   中英

docker-compose 仅在 Jenkins 容器内构建映像失败

[英]docker-compose fails building image only inside Jenkins container

我有一个自定义 Jenkins 容器,我在其中安装了 docker-compose。 我还有一个我试图在管道中部署的应用程序。 使用 docker 的应用程序的初始构建工作正常,运行单元测试也是如此。 但是,要运行集成测试,我需要同时启动应用程序和 mysql(也在容器中运行)。 这是docker-compose进入图片的地方。 它启动良好,启动 mysql 但在尝试构建应用程序映像时失败并出现错误:

path /code/package.json
errno -2
syscall open
enoent ENOENT: no such file or directory, open '/code/package.json'

但是 docker-compose 在我的机器上工作正常(更不用说 docker 文件在我的机器和 Jenkins 管道中运行的 Jenkins 管道)

这是 docker 文件:

FROM node
WORKDIR /code
COPY package.json /code
RUN npm install mysql2
RUN npm install express
COPY . /code
RUN npm install
EXPOSE 3000
CMD ["npm","start"]

docker-compose文件的相关部分:

  myapp:
    build: ./app
    depends_on:
      - mysqlc
    container_name: myappc
    volumes:
      - ./app:/code
    ports:
      - "3000:3000"

而在Jenkinsfile中,相关代码:

...
    stage('Build image') {
      dir('app') {

        app = docker.build("myimage")
      }
    }
   stage('test'){
      sh 'docker-compose up --abort-on-container-exit'
      ...
    }
...

任何见解将不胜感激

更新:将 jenkinsfile 更改为仅用于测试:

node {
    def app

    stage('Clone repository') {
        checkout scm
    }
    stage('Build image') {
      dir('app') {
        /* Build the docker image */

        app = docker.build("myimage")
      }
    }
    stage('test'){
      sh 'docker-compose up --abort-on-container-exit'
      sh 'docker-comopse down -v'
    }
}

它仍然失败

这就是我运行 Jenkins 容器的方式:

docker run -u root --rm -d -p 8080:8080 -p 50000:50000 --name jenkcont -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenk

这就是我使用 docker compose 创建自定义图像的方式

FROM jenkinsci/blueocean

USER root

RUN curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && \
    chmod +x /usr/local/bin/docker-compose

RUN apk add ca-certificates wget && \
    wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
    GLIBC_VERSION='2.27-r0' && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk && apk add glibc-${GLIBC_VERSION}.apk && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-bin-${GLIBC_VERSION}.apk && apk add glibc-bin-${GLIBC_VERSION}.apk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM