当前位置: 首页 > 知识库问答 >
问题:

如何从目录外执行docker compose?

臧兴学
2023-03-14

我可能做错了什么,但我会在这里问一下,以防万一,因为我找不到它。基本上,当我在pc上运行docker映像时,我没有问题,我只是做“Docker-compose run...”从ruby应用程序目录中。然而,当我将图像推到docker-hub时,我想在我的ubuntu服务器上拉出该图像,然后构建该图像。问题是,当我这么做的时候,我实际上没有权限访问ruby应用程序、gemfile或任何东西,所以它根本无法工作...

这是我的错误:

步骤10/23:复制Gemfile/myapp/Gemfile复制失败:stat/var/lib/docker/tmp/docker-builder296802662/Gemfile:没有这样的文件或目录


RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

RUN apt-get update -qq && apt-get install -y nodejs yarn netcat libpq-dev nano tzdata apt-transport-https

RUN apt-get clean autoclean
RUN rm -rf /var/lib/apt /var/lib/dpkg /var/lib/cacbe /var/lib/log

RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile Gemfile.lock /myapp/

RUN bundle install

COPY . .

RUN rm -Rf node_modules/
RUN rm yarn.lock
RUN spring stop

RUN rails webpacker:install
RUN yarn install
RUN yarn upgrade
RUN yarn install --check-files

EXPOSE 3000

# Running the startup script before starting the server
ENTRYPOINT ["sh", "./config/docker/startup.sh"]
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
services:
  db:
    image: mysql:latest
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    # volumes:
      # - ./tmp/db:/var/lib/postgresql/data
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test
      MYSQL_USERNAME: root
      MYSQL_PASSWORD: root
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
    links: 
      - db
    environment: 
      DB_USER: root
      DB_NAME: test
      DB_PASSWORD: root
      DB_HOST: db
      DB_PORT: 3306
      RAILS_ENV: development

非常感谢。

附言。我也总是收到“你的纱线包装过时了!”...

共有1个答案

鱼旺
2023-03-14

如果您已经将应用程序图像推送到Docker Hub,则需要在Web服务中:

  • 添加图像:您的Docker Hub图像的名称
  • 删除生成:
  • 删除覆盖图像代码的卷:
  • 删除命令:重写映像的cmd(考虑将rm-f server.pid命令添加到startup.shentrypoint脚本中)
  • 删除陈旧的链接:设置

这就给您留下了:

version: '3.8'
services:
  db: *as_in_the_question
  web:
    image: 'myname/web:20200622'
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment: 
      DB_USER: root
      DB_NAME: test
      DB_PASSWORD: root
      DB_HOST: db
      DB_PORT: 3306
      RAILS_ENV: development
 类似资料:
  • 我不明白为什么这不起作用;似乎使用spring boot和angular作为maven模块的教程最终直接用java运行,所以这个问题不存在...但我想这应该还管用吧? Spring启动模块POM 棱角聚甲醛

  • 问题内容: 我是Swift的新手,我没有发现任何有关使用Swing语言执行外部程序或访问外部进程的信息。 在语言开发的当前阶段是否可以做,还是应该改用Objective-C? 也许我的Swift程序中可以使用一些Objective-C库? 谢谢。 问题答案: 您可以使用运行外部程序。例如,从Circle和Square:

  • 如果文件位置是资源文件夹,下面的代码工作正常,但是当文件位置在项目目录之外时,比如(c:\file.json),它就失败了。我们如何从项目目录之外加载文件。

  • 我把java的版本从jdk6更新到java7,但是我面临一个严重的问题,每当我在bin目录外执行任何java文件时,它都显示class not found,而在bin目录下执行它时,我却包含了类路径和path,javac编译了java文件,java类也存在于同一个目录下,但是java不能执行类文件,我搜索了一下,得到了类似java-cp的文件。classfilename,但它也会因为说非法参数cp

  • 问题内容: 假设我的项目位于并且我当前的位置是如何在不更改项目位置的情况下运行? 问题答案: 您可以使用参数(或)并指定文件的路径,例如 这会像在工作目录中一样“运行” 。

  • 问题内容: 我有一个Java程序,希望可以在计算机上的任何位置运行。我想从Cygwin命令提示符下运行它。我编写了脚本来调用Java程序。我将Java程序的位置添加到类路径中,并且当我从Java程序的目录运行它们时,脚本可以工作。但是,当我尝试从任何其他目录运行时,我得到: 这是我的脚本: 将Java行更改为以下内容: 产生相同的结果。 问题答案: 在尝试了所有我能想到的一切之后,我回显了该命令,