Docker Shining app 0.0.0.0尝试在本地浏览器中查看时拒绝连接
阅读:Docker Shining app 0.0.0.0尝试在本地浏览器中查看时拒绝连接,r,docker,shiny,docker-compose,R,Docker,Shiny,Docker Compose,阅读: 在创建新的闪亮web应用程序时,我使用rstudio模板app.r创建了一个简单的闪亮应用程序 我的目录: doug:~/Projects/test$ pwd /home/work/Projects/test doug:~/Projects/test$ ls -l total 20 -rw-r--r-- 1 work work 178 Sep 24 18:27 docker-compose.yml -rw-r--r-- 1 work work 240 Sep 24 18:16
doug:~/Projects/test$ pwd
/home/work/Projects/test
doug:~/Projects/test$ ls -l
total 20
-rw-r--r-- 1 work work 178 Sep 24 18:27 docker-compose.yml
-rw-r--r-- 1 work work 240 Sep 24 18:16 Dockerfile
drwxr-xr-x 2 work work 4096 Sep 24 13:55 test_app
-rw-r--r-- 1 work work 205 Sep 24 13:45 test.Rproj
我的Docker文件:
FROM rocker/shiny-verse
COPY test_app mountpoints/apps/test_app
RUN apt-get update \
&& apt-get upgrade -y
WORKDIR mountpoints/apps/test_app
EXPOSE 3838
CMD R --no-save -e 'shiny::runApp("app.R", port = 3838, host = "0.0.0.0")'
我的docker撰写文件:
version: '3.2'
services:
test:
build:
context: .
dockerfile: Dockerfile
restart: always
image: test:latest
ports:
- '80:3838'
user: 'root'
我建立了这个形象:
doug:~/Projects/test$ docker build -t test .
Sending build context to Docker daemon 34.82kB
Step 1/6 : FROM rocker/shiny-verse
---> 6ca67ad3f372
Step 2/6 : COPY test_app mountpoints/apps/test_app
---> Using cache
---> 7d34eee9154b
Step 3/6 : RUN apt-get update && apt-get upgrade -y
---> Using cache
---> 6a9f0856291a
Step 4/6 : WORKDIR mountpoints/apps/test_app
---> Using cache
---> 30897306d02b
Step 5/6 : EXPOSE 3838
---> Using cache
---> 0affe5f79ba4
Step 6/6 : CMD R --no-save -e 'shiny::runApp("app.R", port = 3838, host = "0.0.0.0")'
---> Using cache
---> 1ce09f39c2ce
Successfully built 1ce09f39c2ce
Successfully tagged test:latest
然后我尝试使用docker compose运行:
doug:~/Projects/test$ docker-compose run test
R version 4.0.2 (2020-06-22) -- "Taking Off Again"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> shiny::runApp("app.R", port = 3838, host = "0.0.0.0")
Loading required package: shiny
Listening on http://0.0.0.0:3838
现在,当我尝试在浏览器中访问应用程序时,我得到:
无法访问此网站
0.0.0.0拒绝连接
我尝试了一些变化:
127.0.0.1:3838
本地主机:3838
127.0.0.1:3838/测试应用
本地主机:3838/test\u应用程序
在所有情况下,我都看到了相同的消息,无法在浏览器中查看我的应用程序
我尝试了上面docker compose文件的端口部分:
端口:
- ‘80:3838’
'3838:3838', '127.0.0.1:3838', '3838'
在每种情况下,我都会重建图像并重试,但仍然无法在浏览器中查看我的应用程序
如何运行我的闪亮应用程序并在浏览器中查看它?虽然我知道您打算使用
docker compose
,但我还是迈出了确保基本网络正常工作的第一步。我能够联系到:
docker run-it--rm-p3838:3838测试
然后我尝试了basicdocker
,我能够让它工作
docker编写运行-p 3838:3838测试
(同样,需要-p3838:3838
.)
从这里看来,docker compose
实际上是用up
开始工作。当我(停止上面的容器后)运行时,我也能看到闪亮的应用程序
docker compose up-d测试
因此,run
和up
之间存在差异。在阅读中,我发现:
与run
一起使用的命令在新容器中启动,该容器的配置由服务的配置定义,包括卷、链接和其他详细信息。然而,有两个重要的区别
首先,run
传递的命令覆盖服务配置中定义的命令。例如,如果web
服务配置是用bash
启动的,那么docker compose run web python app.py
将用python app.py
覆盖它
第二个区别是,docker compose run
命令不创建服务配置中指定的任何端口。这可防止端口与已打开的端口发生冲突。如果确实希望创建服务端口并将其映射到主机,请指定--服务端口
标志
(强调矿山)
这促使我尝试(并成功):
docker compose运行--服务端口测试
所有这些,http://localhost:3838
工作正常(对于我在windows上…应该也适用于其他人,但如果不是localhost
,请尝试127.0.0.1
)
我的文件,为了测试速度稍微修改了一下,因为我没有你的
test\u应用程序
:
Dockerfile
来自摇滚乐/闪亮诗句的
暴露3838
CMD R——不保存-e'库(闪亮);运行示例(“01_hello”,port=3838,host=“0.0.0.0”);'
docker-compose.yml
版本:“3.2”
服务:
测试:
建造:
上下文:。
dockerfile:dockerfile
重新启动:始终
图片:测试:最新
端口:
- "3838:3838"
用户:'root'
虽然我知道您打算使用docker compose
,但我还是迈出了确保基本网络正常工作的第一步。我能够联系到:
docker run-it--rm-p3838:3838测试
然后我尝试了basicdocker
,我能够让它工作
docker编写运行-p 3838:3838测试
(同样,需要-p3838:3838
.)
从这里看来,docker compose
实际上是用up
开始工作。当我(停止上面的容器后)运行时,我也能看到闪亮的应用程序
docker compose up-d测试
因此,run
和up
之间存在差异。在阅读中,我发现:
与run
一起使用的命令在新容器中启动,该容器的配置由服务的配置定义,包括卷、链接和其他详细信息。然而,有两个重要的区别
首先,run
传递的命令覆盖服务配置中定义的命令。例如,如果web
服务配置是用bash
启动的,那么docker compose run web python app.py
将用python app.py
覆盖它
第二个区别是,docker compose run
命令不创建服务配置中指定的任何端口。这可防止端口与已打开的端口发生冲突。如果确实希望创建服务端口并将其映射到主机,请指定--服务端口
标志
(强调矿山)
这促使我尝试(并成功):
docker compose运行--服务端口测试
所有这些,http://localhost:3838
工作正常(对于我在windows上…应该也适用于其他人,但如果不是localhost
,请尝试127.0.0.1
)
我的文件,为了测试速度稍微修改了一下,因为我没有你的
test\u应用程序
:
Dockerfile
来自摇滚乐/闪亮诗句的
暴露3838
CMD R——不保存-e'库(闪亮);运行示例(“01_hello”,port=3838,host=“0.0.0.0”);'
docker-compose.yml
版本:“3.2”
服务:
测试:
建造:
上下文:。
dockerfile:dockerfile
重新启动:始终
图片:测试:最新
端口:
- "3838:3838"
用户:'root'
端口第一个数字是主机端口,第二个数字是集装箱端口。当你是康妮的时候