docker 无法使用停靠的应用程序访问本地主机

qrjkbowd  于 2023-01-12  发布在  Docker
关注(0)|答案(1)|浏览(134)

MacOS Monterey
我有一个简单的Dockerfile

FROM denoland/deno:1.29.1

EXPOSE 4200

WORKDIR /app

ADD . /app

RUN deno cache ./src/index.ts

CMD ["run", "--allow-net", "--allow-read", "./src/index.ts"]

最简单的deno代码

const handler = (request: Request) => {
  return new Response("heyo", { status: 200 });
};
DenoServer.serve(handler, { hostname: HOST, port: PORT });

在本地运行应用程序工作正常,我可以到达localhost:4200。但是当我用docker运行应用程序时,请求失败
我用
一个二个一个一个
我可以看到容器正在运行,尝试命中{{ .NetworkSettings.IPAddress }}也不起作用
docker container running on localhost

cfh9epnr

cfh9epnr1#

docker运行命令中似乎没有包含必要的环境变量。要指定主机和端口,可以在docker命令中使用-e选项。

docker build -t deno-sample .
docker run -e HOST=localhost -e PORT=4200 -p 4200:4200 deno-sample

有关详细信息,请参阅以下链接中的Docker文档:https://docs.docker.com/engine/reference/commandline/run/

FROM denoland/deno:1.29.1

EXPOSE 4200

WORKDIR /app

COPY . /app

# RUN deno cache ./src/index.ts
RUN ls

CMD ["deno", "run", "--allow-net", "--allow-read", "app.ts"]

下面是我的应用程序.ts,路径与dockerfile相同

function requestHandler() {
  console.log(">>>>>")
  return new Response("Hey, I'm a server")
}

serve(requestHandler, { hostname: '0.0.0.0', port: 4200 })

相关问题