当前位置: 首页 > 面试题库 >

Rails服务器仍在新打开的Docker容器中运行

高迪
2023-03-14
问题内容

我想使用Docker部署我的rails项目。因此,我使用Docker-Compose。但是我收到一个奇怪的错误消息。当运行docker-compose
up(包含db-container和postgresql,redis和带有rails的Web容器)时,我得到一个

web_1 | => Booting Puma web_1 | => Rails 4.2.4 application starting in production on http://0.0.0.0:3000 web_1 | => Runrails server -h for more startup options web_1 | => Ctrl-C to shutdown server web_1 | A server is already running. Check /usr/src/app/tmp/pids/server.pid. web_1 | Exiting
所以我不明白为什么会收到此消息,因为每次运行docker-
compose时,都会启动新容器,而不是先前的容器。即使要删除这些,server.pid我也无法执行,因为此容器未运行。

我的docker-compose.yml文件

web:
  dockerfile: Dockerfile-rails
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  ports:
    - "80:3000"
  links:
    - redis
    - db
  environment:
    - REDISTOGO_URL=redis://user@redis:6379/

redis:
  image: redis

db:
  dockerfile: Dockerfile-db
  build: .
  env_file: .env_db

Dockerfile-rails

FROM rails:onbuild

ENV RAILS_ENV=production

我认为我不需要发布所有的Dockerfile

UPD:我自己修复了它:我只是删除了所有容器,然后docker-compose up再次运行


问题答案:

您正在使用onbuild映像,因此您的工作目录已安装在容器映像中。这对开发非常有好处,因为在编辑代码时会实时更新应用程序,并且例如在运行迁移时会更新主机系统。

这也意味着,每次服务器运行时,主机系统的tmp目录都将被pid文件写入,如果服务器未正确关闭,该目录将保留在该目录中。

只需从主机系统运行以下命令:

sudo rm tmp/pids/server.pid

例如,当您在docker-compose下使用foreman时,这可能是真正的痛苦,因为仅按ctrl + c不会删除pid文件。



 类似资料:
  • 我有一个php docker容器,我的Symfony项目在哪里。 这是我的docker-compose.yml 我想使用以下命令启动我的symfony项目: 但当我想访问url时,它不起作用。我收到以下错误消息: localhost页不行 localhost未发送任何数据。 我该怎么解决这个问题? PS:我用docker for mac 和输出: [2016-08-06 14:09:53]php.

  • 问题内容: 我正在设置一个简单的图像:包含Riak(一个NoSQL数据库)的图像。该映像以CMD形式启动Riak服务。现在,如果我使用将该程序作为守护程序运行,它将启动Riak进程(我可以在日志中看到它)。但是,它会在几秒钟后自动关闭。如果我使用riak进程未启动运行它(更新:对此的解释,请参见答案)。实际上,根本没有任何服务在运行。我可以使用终端手动启动它,但是我希望Riak自动启动。我认为其他

  • 我想将 作为容器运行,并希望让其他微服务稍后注册到此容器。但是我遇到了一些问题,让它作为容器运行并访问它。应用程序在 STS 中运行没有问题。当我在STS中执行它时,我可以使用访问。 < code>application.java: > < li >运行< code>mvn包 运行驱逐任务 通知 大约每分钟返回一次。如果我尝试在浏览器中使用 调用 ,它说我无法访问此页面。当我使用 ctrl c 结

  • 问题内容: 目前,我在需要连接到camunda的docker容器内运行一个node.js应用程序,该容器在另一个容器中运行。 我使用以下命令启动容器 这两个应用程序现在都在运行,我可以通过在端口8000上导航到主机的IP来访问camunda,运行wget 还会返回camunda页面。使用和键入我的应用程序容器时,我无法访问camunda。相反,我得到以下错误: 当我使用将我的应用程序容器链接到ca

  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 我正在使用Spring Cloud创建微服务架构。 我正在使用Spring Cloud中的以下功能 Zuul–API网关服务,提供动态路由、监控、弹性、安全等功能- 功能区–客户端负载平衡器 Faign–声明性REST客户端 Eureka–服务注册和发现 Sleuth–通过日志进行分布式跟踪 Zipkin–具有请求可视化的分布式跟踪系统 Hystrix-适用于所有API的断路器、容错、Hystri