ruby-on-rails - 访问没有端口号的 docker-compose extra_hosts
问题描述
我在我的 docker-compose 中添加了一些额外的主机,现在看起来像这样:
version: '3'
services:
memcached:
image: memcached:1.5.2-alpine
restart: always
ports:
- "11211:11211"
postgres:
image: postgres:9.4-alpine
restart: always
volumes:
- ~/.engine-data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
- POSTGRES_DB=myapp_development
- POSTGRES_USER=default
- POSTGRES_PASSWORD=secret
redis:
image: redis:3.2.0-alpine
restart: always
volumes:
- ~/.engine-data/redis:/data
ports:
- "6379:6379"
web:
build:
context: .
dockerfile: "Dockerfile"
command: ./wait-for-it.sh redis:6379 -- ./wait-for-it.sh postgres:5432 -- bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/opt/apps/engine
depends_on:
- memcached
- redis
- postgres
ports:
- "3000:3000"
env_file:
- .env
extra_hosts:
- "my.api:127.0.0.1"
- "my.webapp:127.0.0.1"
我的意图是使用 my.webapp 访问网络,而不使用 localhost:3000。但不是那样,我得到的是在 my.webapp:3000 运行的网络应用程序
如何避免端口号?
解决方案
使用 http 时,如果 URL 中未指定数字,您的浏览器将使用默认端口 80。
如果要使用非标准端口,则必须在 URL 中指定。
例如,如果我的网络服务器在 www.example.com 主机的 80 端口上运行,我可以在浏览器中输入http://www.example.com/,它就可以连接到 80 端口。
如果我使用的是非标准端口(如 3000),那么我必须输入如下 URL:http ://www.example.com:3000/
在您的情况下,不必指定端口 3000,您应该更新您的 compose 文件以发布到主机的端口 80 而不是主机的端口 3000。docker 和 docker-compose 中的端口发布采用 : 格式。这意味着您需要在 compose 文件中切换 from3000:3000
并80:3000
重新运行docker-compose up -d
.
您还提到希望使用“my.webapp”主机名而不是“localhost”主机名来访问您的服务。您可以通过在您的计算机上添加主机文件条目来实现此目的,以便“my.webapp”解析为 127.0.0.1。您还可以使用任何其他数量的 DNS 名称解析方法来实现相同的目的。
推荐阅读
- django - 将可点击的链接添加到管理页面 List_view
- javascript - Javascript如何使用includes()验证字符串是否包含'\'
- python - 使用 asyncio.gather 正确处理 SystemExit
- python - 错误:命令“clang”失败,退出状态为 1:在 MacOS Big Sur M1 上安装熊猫
- assembly - 如何处理实模式下的int中断?(16 位)
- sql - SQL 数据库表 - 签入/签出日期检查
- sql - 使用具有多个条件的其他表中的数据更新表?
- reactjs - 如何在 React.useEffect() 中跟踪单个状态?
- python - 如何解决 ArgumentError:参数 2:
: tkinter askopenfile 中的错误类型 - javascript - 在页面上使用具有相同道具名称的相同组件不起作用 vuecli