【问题标题】:How do i execute redbird in a Docker container?如何在 Docker 容器中执行 redbird?
【发布时间】:2019-10-16 14:22:46
【问题描述】:

所以,这是我在互联网上没有找到任何答案的第一个问题。

所以,基本上我有一个按预期工作的 redbird 应用程序,我决定将它放在 Docker 容器中(不想运行 screen 或 tmux 等)。

所以我创建了一个 Dockerfile 如下:

FROM node:alpine

WORKDIR /var/WebService/apps/redbird

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 80 443
CMD ["node", "app"]

和一个 docker-compose.yml 如下:

version: "3"

services:
    redbird:
        container_name: redbird
        build: .
        command: npm start
        ports:
            - "80"
            - "443"
        environment:
            NODE_ENV: PRODUCTION

它不起作用。

我的想法是:

  • Docker 无法访问端口 80 和 443。(是的,我以 root 身份运行,我知道不建议这样做)。
  • Docker 没有将容器内的端口映射到我的外部 LAN。

而且,为什么人们不谈论红鸟?我找到了 0 条关于 redbird 的帮助。

【问题讨论】:

  • 在什么情况下不起作用? ports: 的形式要求 Docker 选择主机端口;它避免了一些潜在的冲突,但更难使用。
  • 请求无效。我访问了 domain.com,但它无法连接到服务器。

标签: node.js docker proxy reverse redbird


【解决方案1】:

您不需要 docker-compose 来执行 docker 容器。您在 dockerhub 也有 redbird 的图像,例如 https://hub.docker.com/r/myuserindocker/redbird-reverseproxy

docker run --rm -p 80:80 -p 443:443 myuserindocker/redbird-reverseproxy

【讨论】:

  • 嘿,我需要使用我正在创建的这个图像,它不是默认的红鸟。一个问题实际上是使用 docker 绑定端口,因为如果我像 npm start 一样运行它就可以正常工作
  • 对我来说似乎是格式问题。我建议在 docker 中构建它,并在检查后查看 docker-compose 文件。这段代码应该可以工作:“docker build -t user/myimage:latest。”和“docker run --rm -p 80:80 -p 443:443 user/myimage:latest”。如果提示错误请添加
  • 另外我不知道docker是否绑定端口只是说“80”而不是“80:80”。如果您确定它是端口绑定,请尝试使用完整的参数。您文件中的其他选项很好。
猜你喜欢
  • 2019-09-08
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多