sách gpt4 ai đã đi

Không thể Dockerize Elm - Stack Overflow

In lại 作者:行者123 更新时间:2023-12-02 18:15:07 29 4
mua khóa gpt4 Nike

我一直在对 Elm 应用程序进行 docker 化时遇到问题。据我所知,我已经创建了一个完整且有效的 Docker 文件……但它不起作用。

我会解释的。

所以我的脚本在 3 个文件中运行。

首先是启动脚本dockerBuild.sh

docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)

docker build -t elmapp .
docker run -p 8000:8000 elmapp

这只是杀死所有以前的 docker 镜像并构建和运行 elmapp.

接下来我有正在调用的 Dockerfile:

FROM node:latest

RUN npm install -g yarn
RUN yarn global add elm

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY . /usr/src/app
RUN chmod 777 runElm.sh

EXPOSE 8000
CMD sh runElm.sh

这会产生所需的输出并运行 runElm.sh.

我有两种替代方法来设置 runElm 文件 - 它们都产生相同的结果。

  • 备选方案 1

    elm-reactor --address=0.0.0.0 --port=8000

这只是在以下 html 文件上调用 elm-reactor:



<đầu>



body, html{
height: 100%;
width: 100%;
lề: 0;
đệm: 0;
}




var app = Elm.Main.fullscreen()



  • 备选方案 2

另一种编译 Elm 应用程序的可能方法是将代码转换为 javascript 并在 html 文档中运行 javascript。这里的 runElm 文件应该是这样的:

elm-make ./src/Main.elm --output=main.js
python -m SimpleHTTPServer 8000

html 看起来像这样:




<đầu>

Elm • Play


body, html{
height: 100%;
width: 100%;
lề: 0;
đệm: 0;
}









var node = document.getElementById('main');
var app = Elm.Main.embed(node);



câu hỏi:

这里的问题是,当我在构建队列完成后导航到 localhost:8000 时,我得到 404。但是,如果我在 Dockerfile 中运行上述两个替代方案中的任何一个 không 我得到我的程序编译就好了。通常问题是端口没有正确公开,但在这里我在我的 dockerfile 中公开了端口 8000,在我的 docker run 中,它与我的 SimpleHTTPServer 上运行的端口相同榆树 react 器 服务器。我已经研究了各种其他方法来让 Docker 与 Elm 一起玩得很好,但我遇到了困难。

有人有什么建议吗?

biên tập:

已关闭 - 不确定我做了什么,但在检查并确保所有内容的格式正确后,它现在可以正常工作了。一定是刚写原始代码的时候累了。谢谢大家!

1 Câu trả lời

如果这是一个 httpserver 我猜它应该在端口 80 上运行,当你指定端口 8000 时意味着你公开容器端口而不是主机端口,你可以通过任何一种方式进行端口映射

  1. 与你做的一样,容器上的端口 8000 将被映射到主机上的随机端口。
  2. 您可以通过将此添加到您用来创建container -p 8000:80 , 8000 在主机上,80 在容器上

Để ý

EXPOSE 指令通知 Docker 在容器启动时要暴露某个端口:

EXPOSE port1 port2 …

即使在暴露端口之后,在启动容器时,您仍然需要使用 -p 标志向“docker run”cmd 提供端口映射。当您想将容器暴露的端口映射到自定义主机端口时,此指令很有用

端口命令查找绑定(bind)到一个暴露的面向公众的端口容器中的端口:

$ docker port CONTAINER PRIVATE_PORT

如果您想知道哪个绑定(bind)到容器端口,请运行以下命令

docker port CONTAINER

关于javascript - 不能 Dockerize Elm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961285/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com