我在docker-compose中添加了一些extra_hosts,现在看起来像这样:
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和no localhost:3000访问网页。但不是那样,我得到的是我的网络应用程序运行在my.webapp:3000
如何避免端口号?
答案 0 :(得分:0)
使用http时,如果URL中未指定数字,则浏览器将使用默认端口80。
如果要使用非标准端口,则必须在URL中指定它。
例如,如果我的网络服务器在www.example.com主机上的端口80上运行,我可以在浏览器中输入http://www.example.com/,它足够智能连接到端口80.
如果我使用的是非标准端口(如3000),那么我必须输入如下网址:http://www.example.com:3000/
在您的情况下,为了不必指定端口3000,您应该更新您的撰写文件以发布到您的主机的端口80而不是主机的端口3000.在docker和docker-compose中发布端口采取以下格式:。这意味着您需要在撰写文件中从3000:3000
切换到80:3000
,然后重新运行docker-compose up -d
。
您还提到要使用" my.webapp"来访问您的服务。主机名而不是" localhost"主机名。您可以通过在计算机上添加主机文件条目来实现此目的,以便" my.webapp"解析为127.0.0.1。您还可以使用任何其他数量的DNS名称解析方法来实现相同的目的。