gpt4 book ai didi

r - 尝试在本地浏览器中查看时,Docker R Shiny应用程序0.0.0.0拒绝连接

转载 作者:行者123 更新时间:2023-12-02 21:32:51 26 4
gpt4 key购买 nike

读:

  • Docker refused to connect

  • 创建新的 Shiny Web应用程序时,我使用rstudio模板app.r创建了一个简单的 Shiny 应用程序。
    我的目录:
    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-compose文件:
    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
    现在,当我尝试在浏览器中通过 http://0.0.0.0:3838访问该应用程序时,我得到:

    This site can’t be reached0.0.0.0 refused to connect.


    我尝试了一些变体:
    127.0.0.1:3838
    本地主机:3838
    127.0.0.1:3838/test_app
    本地主机:3838 / test_app
    在所有情况下,我都看到相同的消息,并且无法在浏览器中查看我的应用程序。
    我尝试尝试上述docker-compose文件的端口部分:
    端口:
  • '80:3838'

  • 尝试过:
    '3838:3838', '127.0.0.1:3838', '3838'
    在每种情况下,我都会重建图像并再次尝试,但是仍然无法在浏览器中查看我的应用程序。
    如何运行Shiny应用程序并在浏览器中查看它?

    最佳答案

    当我知道您打算使用docker-compose时,我要确保基本网络正常运行的第一步。我能够连接:

    docker run -it --rm -p 3838:3838 test
    然后,我尝试了基本的 docker,并且能够使它正常工作
    docker-compose run -p 3838:3838 test
    (再次,需要 -p 3838:3838 ...)
    从那里开始,看来 docker-compose实际上是用 up开头的。当我(停止上述容器之后)运行时,我还能够看到 Shiny 的应用程序
    docker-compose up -d test
    因此, runup之间是有区别的。阅读 https://docs.docker.com/compose/reference/run/,我发现了这一点:

    Commands you use with run start in new containers with configuration defined by that of the service, including volumes, links, and other details. However, there are two important differences.

    First, the command passed by run overrides the command defined in the service configuration. For example, if the web service configuration is started with bash, then docker-compose run web python app.py overrides it with python app.py.

    The second difference is that the docker-compose run command does not create any of the ports specified in the service configuration. This prevents port collisions with already-open ports. If you do want the service’s ports to be created and mapped to the host, specify the --service-ports flag ...


    (强调我的)
    这导致我尝试(并成功):
    docker-compose run --service-ports test
    在所有这些情况下, http://localhost:3838都可以工作(对我来说,在Windows上也应该适用于其他人,尽管如果不是 localhost,请尝试 127.0.0.1)。

    我的文件经过稍微修改以提高测试速度,并且因为我没有 test_app:
    Docker文件
    FROM rocker/shiny-verse
    EXPOSE 3838
    CMD R --no-save -e 'library(shiny); runExample("01_hello", port=3838, host="0.0.0.0");'
    docker-compose.yml
    version: '3.2'
    services:
    test:
    build:
    context: .
    dockerfile: Dockerfile
    restart: always
    image: test:latest
    ports:
    - "3838:3838"
    user: 'root'

    关于r - 尝试在本地浏览器中查看时,Docker R Shiny应用程序0.0.0.0拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64056732/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com