代码之家  ›  专栏  ›  技术社区  ›  Saurabh Palatkar

在docker中吞下构建任务失败

  •  2
  • Saurabh Palatkar  · 技术社区  · 6 年前

    我有一个简单的问题 Hapi.js Node API

    enter image description here

    docker-compose -f docker-compose.dev.yml up -d --build
    

    这是我的密码: /海湾文件:

    'use strict';
    
    const gulp = require('gulp');
    const rimraf = require('gulp-rimraf');
    const tslint = require('gulp-tslint');
    const mocha = require('gulp-mocha');
    const shell = require('gulp-shell');
    const env = require('gulp-env');
    
    /**
     * Remove build directory.
     */
    gulp.task('clean', function () {
      return gulp.src(outDir, { read: false })
        .pipe(rimraf());
    });
    
    /**
     * Lint all custom TypeScript files.
     */
    gulp.task('tslint', () => {
      return gulp.src('src/**/*.ts')
        .pipe(tslint({
          formatter: 'prose'
        }))
        .pipe(tslint.report());
    });
    
    /**
     * Compile TypeScript.
     */
    
    function compileTS(args, cb) {
      return exec(tscCmd + args, (err, stdout, stderr) => {
        console.log(stdout);
    
        if (stderr) {
          console.log(stderr);
        }
        cb(err);
      });
    }
    
    gulp.task('compile', shell.task([
      'npm run tsc',
    ]))
    
    /**
     * Watch for changes in TypeScript
     */
    gulp.task('watch', shell.task([
      'npm run tsc-watch',
    ]))
    /**
     * Copy config files
     */
    gulp.task('configs', (cb) => {
      return gulp.src("src/configurations/*.json")
        .pipe(gulp.dest('./build/src/configurations'));
    });
    
    /**
     * Build the project.
     */
    gulp.task('build', ['tslint', 'compile', 'configs'], () => {
      console.log('Building the project ...');
    });
    
    /**
     * Run tests.
     */
    gulp.task('test', ['build'], (cb) => {
      const envs = env.set({
        NODE_ENV: 'test'
      });
    
      gulp.src(['build/test/**/*.js'])
        .pipe(envs)
        .pipe(mocha({ exit: true }))
        .once('error', (error) => {
          console.log(error);
          process.exit(1);
        });
    });
    
    gulp.task('default', ['build']);
    

    FROM node:latest
    
    LABEL author="Saurabh Palatkar"
    
    # create a specific user to run this container
    # RUN adduser -S -D user-app
    
    # add files to container
    ADD . /app
    
    # specify the working directory
    WORKDIR app
    RUN chmod -R 777 .
    RUN npm i gulp --g
    # build process
    RUN npm install
    # RUN ln -s /usr/bin/nodejs /usr/bin/node
    RUN npm run build
    # RUN npm prune --production
    EXPOSE 8080
    # run application
    CMD ["npm", "start"]
    

    ./docker-compose.dev.yml公司:

    version: "3.4"
    
    services:
      api:
        image: node-api
        build:
          context: .
          dockerfile: .docker/dev.dockerfile
        environment:
          PORT: 8080
          MONGO_URL: mongodb:27017
          NODE_ENV: development
        ports:
          - "8080:8080"
        links:
          - database
    
      database:
        image: mongo:latest
        ports:
          - "27017:27017"
    

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Michele Federici    6 年前

    编辑: 问题不是我最初想的那样。Dockerfile中的操作顺序完全错误:必须先安装依赖项,然后将所有文件复制到容器中(这样安装的依赖项也将被复制),只有这样才能使用应用程序及其依赖项。

        2
  •  0
  •   Nilanka Manoj    6 年前

    不要使用node latest,将docker文件配置为您在DEV环境中使用的确切节点版本。