代码之家  ›  专栏  ›  技术社区  ›  tomatito

命令“/bin/sh-c bundle install”返回了一个非零代码:10

  •  5
  • tomatito  · 技术社区  · 8 年前

    我的当前文件夹是: /home/user/Desktop/me/docker-kubernets

    1运行命令:

    docker run -it --rm --user "$(id -u):$(id -g)" \
       -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle --api --database postgresql webapp
    
    cd webapp
    

    2. webapp。形态

    server {
      listen 80;
      server_name _;
      root /home/user/Desktop/me/docker-kubernets;
    
      passenger_enabled on;
      passenger_user app;
    
      passenger_ruby /usr/bin/ruby2.4;
    }
    

    3. 轨道环境。形态

    env SECRET_KEY_BASE;
    env DATABASE_URL;
    env DATABASE_PASSWORD;
    

    4. Dockerfile文件

    FROM phusion/passenger-ruby24
    # Set correct environment variables.
    ENV HOME /root
    # Use baseimage-docker's init process.
    CMD ["/sbin/my_init"]
    # Additional packages: we are adding the netcat package so we can
    # make pings to the database service
    RUN apt-get update && apt-get install -y -o Dpkg::Options::="--force-confold" netcat
    # Enable Nginx and Passenger
    RUN rm -f /etc/service/nginx/down
    # Add virtual host entry for the application. Make sure
    # the file is in the correct path
    RUN rm /etc/nginx/sites-enabled/default
    ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf
    # In case we need some environmental variables in Nginx. Make sure
    # the file is in the correct path
    ADD rails-env.conf /etc/nginx/main.d/rails-env.conf
    # Install gems: it's better to build an independent layer for the gems
    # so they are cached during builds unless Gemfile changes WORKDIR /tmp
    ADD Gemfile /tmp/
    ADD Gemfile.lock /tmp/
    RUN bundle install
    # Copy application into the container and use right permissions: passenger
    # uses the app user for running the application RUN mkdir /home/app/webapp
    COPY . /home/user/Desktop/me/docker-kubernets
    RUN usermod -u 1000 app
    RUN chown -R app:app /home/user/Desktop/me/docker-kubernets
    WORKDIR /home/user/Desktop/me/docker-kubernets
    # Clean up APT when done.
    RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    EXPOSE 80
    

    5. 设置。上海

    #!/bin/sh
    
    echo "Waiting PostgreSQL to start on 5432..."
    
    while ! nc -z postgres 5432; do
      sleep 0.1
    done
    
    echo "PostgreSQL started"
    
    bin/rails db:migrate
    

    添加此文件的正确执行权限

    chmod +x setup.sh
    

    docker编写。yml公司

    version: '2'
    services:
      webapp_setup:
        build: .
        depends_on:
          - postgres
        environment:
          - PASSENGER_APP_ENV=development
        entrypoint: ./setup.sh
      webapp:
        container_name: webapp
        build: .
        depends_on:
          - postgres
          - webapp_setup
        environment:
          - PASSENGER_APP_ENV=development
        ports:
          - "80:80"
        volumes:
          - .:/home/user/Desktop/me/docker-kubernets
    
      postgres:
        image: postgres:10.2
        environment:
          - POSTGRES_PASSWORD=mysecretpassword
          - POSTGRES_USER=webapp
          - POSTGRES_DB=webapp_development
        volumes_from:
          - postgres_data
      postgres_data:
          image: postgres:10.2
          volumes:
            - /var/lib/postgresql/data
          command: /bin/true
    

    7º生成 Gemfile。锁

    docker run --rm -v $(pwd):/usr/src/app -w /usr/src/app ruby:2.4.2 bundle lock
    

    docker-compose build

    我收到错误信息:

    Could not locate Gemfile
        ERROR: Service 'webapp_setup' failed to build: The command '/bin/sh -c bundle install' returned a non-zero code: 10
    

    非常感谢。

    1 回复  |  直到 5 年前
        1
  •  1
  •   tomatito    8 年前

    我在Dockerfile中做了这些更改,它就像一个符咒:

    FROM phusion/passenger-ruby24
    # Set correct environment variables.
    ENV HOME /root
    # Use baseimage-docker's init process.
    CMD ["/sbin/my_init"]
    # Additional packages: we are adding the netcat package so we can
    # make pings to the database service
    RUN apt-get update && apt-get install -y -o Dpkg::Options::="--force-confold" netcat
    # Enable Nginx and Passenger
    RUN rm -f /etc/service/nginx/down
    # Add virtual host entry for the application. Make sure
    # the file is in the correct path
    RUN rm /etc/nginx/sites-enabled/default
    ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf
    # In case we need some environmental variables in Nginx. Make sure
    # the file is in the correct path
    ADD rails-env.conf /etc/nginx/main.d/rails-env.conf
    # Install gems: it's better to build an independent layer for the gems
    # so they are cached during builds unless Gemfile changes WORKDIR /tmp
    
    COPY Gemfile* /tmp/
    WORKDIR /tmp
    RUN bundle install
    
    # Copy application into the container and use right permissions: passenger
    # uses the app user for running the application 
    # RUN mkdir /home/me/Desktop/sg/docker-kubernets
    COPY . /home/me/Desktop/sg/docker-kubernets
    RUN usermod -u 1000 app
    RUN chown -R app:app /home/me/Desktop/sg/docker-kubernets
    WORKDIR /home/me/Desktop/sg/docker-kubernets
    
    # Clean up APT when done.
    RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
    EXPOSE 80
    

    ruby版本 Ruby 2.4.2p198(2017-09-14修订版59899)[x86\u 64-linux]

    我希望能有所帮助!

    当做