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

使用非默认端口在Docker容器中运行Rails应用程序

邢灿
2023-03-14

我有一个简单的rails应用程序,它有一个MongoDB后端。我使用Docker Compose在不同的容器中运行rails应用程序和MongoDB。当我使用默认的rails端口(3000)时,一切正常。

但是,如果我在端口8080上运行rails应用程序,而不是使用CMD[“rails”、“s”、“-p”、“8080”],并在我的Dockerfile中使用expose 8080暴露端口8080,然后重建并推送图像,则只有MongoDB容器启动。我还更改了docker compose中的端口。yml至8080:8080

如果我在端口8080上运行没有Docker的rails应用程序(rails s-p 8080),它工作正常。

为什么我的rails应用程序在使用端口8080时不能在Docker容器中运行,但在使用端口3000时可以运行?

Dockerfile

FROM ruby:2.3.1

EXPOSE 3000

ADD . /code
WORKDIR /code
RUN bundle install

CMD ["rails", "s"]

docker撰写。yml

version: '3'
services:
  web:
    image: "<USERNAME>/<REPO>:<TAG_NAME>"
    build: .
    ports:
      - "3000:3000"
    volumes: 
      - .:/code
    links: 
      - mongodb
    environment: 
      - RAILS_ENV=development
  mongodb:
    image: "mongo:latest"
    ports:
     - "27017:27017"
    volumes:
      - .:/data
    restart: always

共有1个答案

郏佐
2023-03-14

8080:8080告诉docker将容器中的8080暴露给本地计算机上的8080。尝试将其更改为8080:3000,此时它将从主机将3000连接到docker容器上的8080。更多信息在这里:https://www.ctl.io/developers/blog/post/docker-networking-rules/

 类似资料:
  • 其基本思想是运行带有音频和ui的应用程序(vlc、firefox、skype…) 我在使用pulseaudio搜索docker容器,但我找到的所有容器都在TCP上使用pulseaudio流。(应用程序的安全沙箱) https://gist.github.com/hybris42/ce429de428e5af3a344a https://github.com/jlund/docker-chrome-

  • 问题内容: 。 基本思想是使用音频和ui(vlc,firefox,skype等)运行应用程序 我正在使用pulseaudio搜索docker容器,但是找到了所有在tcp上使用pulseaudio流传输的容器。(应用程序的安全沙箱) https://gist.github.com/hybris42/ce429de428e5af3a344a https://github.com/jlund/docke

  • 我有一个react-app,它简单地显示hello-world消息,但我喜欢运行应用程序通过docker-container,但有这个问题。在此消息之后,进程停止,没有运行应用程序。 我不能理解我应该做什么,因为我有一个很小的应用程序,在Dockerfile中有基本代码 我需要安装webpack-dev-server吗,我尝试了,但得到了版本错误,如“手动添加服务器”的版本比已经安装的服务器低。所

  • 我想在Linux上的Azure应用服务(容器的网络应用)上使用scrapinghub/spash容器。 但是部署上的docker run命令会随机更改容器端的绑定端口(请参阅下面的日志,端口8961会自动分配。此数字每次部署都有所不同) 2020-01-21 08:56:47.494信息-docker run-d-p 8961:8050-名称b2scraper-splash\u 3\u d89ce

  • 问题内容: 这个问题是我继续研究Docker的一部分,并且在某些方面跟进了我先前的问题之一。我现在已经了解了如何通过将一堆Docker容器链接在一起来获得完整的应用程序堆栈(实际上是微型VPS)。例如,可以创建一个堆栈,为Apache+ PHP5提供一堆扩展名+ Redis + MemCached+MySQL,它们都在Ubuntu上运行,无论是否带有附加数据容器,都可以轻松地序列化用户数据。 一切

  • 我正在测试一些与比特币相关的代码,为了测试它,我在docker容器中安装了比特币测试网盒。 我使用这个指南:https://registry.hub.docker.com/u/freewil/bitcoin-testnet-box/ 我没有任何问题地拉和运行码头工人。 但是,我无法编辑其目录中的bitcoin.conf文件,因为我没有安装像NANO这样的编辑器。 我想: 但它不起作用。我该怎么解决