我正在docker容器中创建一个react应用。更具体地说,它包含的内容远不止于此,但我被困在react / nginx:80暴露在容器外部的情况下。当我使用另一个端口(例如3000或8080)时,我似乎没有这个问题。
git cone https://chrisconnors@bitbucket.org/chrisconnors/mndspn.git
然后我用frontend
docker-compose up --build -d frontend
运行后,我可以在容器本身中点击0.0.0.0:80
。
/ # wget 0.0.0.0:80
Connecting to 0.0.0.0:80 (0.0.0.0:80)
index.html 100% |******************************************| 548 0:00:00 ETA
但是,当我在浏览器中点击它或从终端(容器外部)卷曲时,会出现此错误:
:~/src/mndspn$ curl --trace-ascii dump.txt 0.0.0.0:80
curl: (56) Recv failure: Connection reset by peer
:~/src/mndspn$ cat dump.txt
== Info: Rebuilt URL to: 0.0.0.0:80/
== Info: Trying 0.0.0.0...
== Info: TCP_NODELAY set
== Info: Connected to 0.0.0.0 (127.0.0.1) port 80 (#0)
=> Send header, 71 bytes (0x47)
0000: GET / HTTP/1.1
0010: Host: 0.0.0.0
001f: User-Agent: curl/7.58.0
0038: Accept: */*
0045:
== Info: Recv failure: Connection reset by peer
== Info: stopped the pause stream!
== Info: Closing connection 0
答案 0 :(得分:0)
对Docker容器的连接重置通常表示您已为该容器定义了一个端口映射,该端口映射不指向应用程序。
因此,如果您已定义80:80的映射,请检查docker实例中的进程实际上是否在端口80上运行(netstat -an | grep LISTEN)。
确保您的docker run
命令中有-p 80:80选项
答案 1 :(得分:0)
只需检查您可能正在使用的docker compose文件,frontend
服务中就不会暴露端口80。
{{3}}
取消注释端口行{Line 39-40}
ports:
- "80:80"
使用docker-compose再次启动容器,您应该可以访问该应用程序。