- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用express运行的 Node 应用程序,以在docker容器中运行网络服务器。我的 Node 应用程序看起来有点像这样:
'use strict'
const childProcess = require('child_process');
const express = require('express');
... // so many requires
const main = async () => {
var app = express();
app.get('/status', function (req, res) {
res.send('Hello World')
});
app.listen(8080,'0.0.0.0');
... // so much more code
}
main().catch((err) => {
console.error(err);
});
我不相信我的 Node 应用程序有任何问题,因为当我使用以下命令登录我的 docker 容器时: docker exec -it blacklist-service_blacklist-service_run_1/bin/bash
并运行:curl localhost:8080/status
它返回Hello World
因此,这让我相信我的 docker 配置有问题,因为当我从主机运行: curl localhost:8080/status 时,我收到: curl: (7)无法连接到本地主机端口8080:连接被拒绝
所以......我的 Dockerfile 看起来像这样:
FROM ubuntu:bionic
RUN apt-get update && apt-get -qq install \
curl \
git \
gnupg2 \
locales \
netcat \
python3-pip
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN pip3 install abydos \
num2words \
simplejson \
unidecode
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash
RUN apt-get -qq install nodejs
RUN npm install npm@latest -g
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN npm install -g \
Eficode/wait-for
RUN npm install \
express \
googleapis \
uuid
COPY src/ .
COPY bin/ ./bin
EXPOSE 8080
ENTRYPOINT /usr/lib/node_modules/wait-for/wait-for ${WAIT_FOR} -t 20 -- node server.js
(我知道,我知道,但这是使用 ubuntu 作为我们的 docker 镜像的要求)
然后我有一个如下所示的 docker-compose 文件:
version: "3.6"
services:
rabbitmq:
image: "rabbitmq:latest"
ports:
- "15672:15672"
- "5672:5672"
volumes:
- "./enabled_plugins:/etc/rabbitmq/enabled_plugins"
blacklist-service:
environment:
NODE_ENV: development
image: ${DOCKER_REGISTRY}unicorn/blacklist-service:${DOCKER_IMAGE_LABEL:-latest}
build:
context: .
dockerfile: ./debugging/Dockerfile
ports:
- "0.0.0.0:8080:8080"
depends_on:
- rabbitmq
environment:
- WAIT_FOR=rabbitmq:5672
- AMQP_SHARED_HOST=rabbitmq
- AMQP_USERNAME=guest
- AMQP_PASSWORD
- AMQP_EXCHANGE=amq.topic
- AMQP_TOPIC=topic
- AMQP_JOB=state51::Job::RunQAForFormat
- AMQP_QUEUE
- AMQP_PATTERN=#
- AMQP_SHARED_PORT=5672
- AMQP_SEND_EXCHANGE=firehose
- BLACKLIST_SERVICE_SECRET
- GOOGLE_PRIVATE_KEY
- GOOGLE_CLIENT_EMAIL
- GOOGLE_CLIENT_ID
- GOOGLE_API_KEY
./debugging/Dockerfile 指的是我上面列出的 Dockerfile。
然后我通过:docker-compose -f docker-compose.local.yml build构建我的图像并使用:docker-compose -f docker-compose.local.yml运行它运行 blacklist-service (docker-compose.local.yml 是上述 docker-compose 文件的名称)。
那么我暴露我的服务器哪里出了问题?运行 Docker 社区:在我的 Mac 上运行版本 18.06.1-ce-mac73 (26764)
最佳答案
使用docker-compose run [service-name]
时需要添加参数--service-ports
。
所以正确的命令是:docker-compose -f docker-compose.local.yml run --service-ports blacklist-service
,它允许我 curl 到localhost:8080/状态并得到我期望的响应。
关于node.js - 将我的 Express docker 容器暴露给全世界有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213726/
我对 DBT 还很陌生,正在尝试探索如何进行曝光。我已经阅读了文档 ( https://docs.getdbt.com/docs/building-a-dbt-project/exposures ),
我对 DBT 还很陌生,正在尝试探索如何进行曝光。我已经阅读了文档 ( https://docs.getdbt.com/docs/building-a-dbt-project/exposures ),
这在Python中合法吗?似乎有效... 谢谢 # with these lines you not need global variables anymore if __name__ == '__m
我正在尝试使用 tomcat Docker 镜像打包一个 war 文件。我正在尝试在图像中公开 tomcat 端口以供外部访问。 这是我的docker文件 FROM tomcat8:3.0.0 C
我一直在尝试通过 ip 连接到 docker 容器,但再次失败。当我使用“docker inspect container-id”时,我得到了这个结果。 我的虚拟盒子默认设置是: 有人可以帮我解决这个
我知道要在 docker 容器中公开端口,您可以使用 -p标志(例如 -p 1-100:1-100 )。但是有没有一种很好的方法可以将大部分可能的端口从容器暴露给主机?例如,如果我在位于 VM 中的容
我正在开发一个带有 ktor 应用程序的 Kotlin,并且我使用暴露为 ORM。我有一个引用另一个表的表。这种关系是多对一的。前任: object Users : IdTable() { ov
我正在尝试学习 polymer ,并且正在尝试制作一个基本的消息传递框架。所以我创建了一个名为 messages-framework 的小 polymer 元素,它将显示消息,并在 3 秒后删除该消息
我的问题很简单也很笼统:当调用 RESTFUL API 时,无论是我的还是外部的,将 token 暴露在前端是否是常见做法/可以?例如,在 Google map api 的文档中,他们建议使用以下代码
我们有一个包含 1000 万条记录的数据库表。我们不想使用 auto_increment,因为那样会让我们的用户知道我们有多少条记录。我们不想将其暴露给我们的竞争对手。我看到的问题是使用 UUID 或
我有以下用户表对象和实体类: object UserTable : IntIdTable() { val name = varchar("name", 256) } class User(id
对于部署在 Google kubernetes 引擎上的基于微服务的示例架构,我需要帮助来验证我的理解: 我们知道服务应该对 pod 副本集的流量进行负载平衡。 当我们创建一个 nginx 入口 Co
String caminhoFoto = getExternalFilesDir(null) + "/"+ System.currentTimeMillis() +".jpg";
我目前正在编写一个用 Parcel js 打包的 TypeScript 模块化库。应用程序将使用该库来实现特定功能。消费应用程序/网页将在其 html 中添加对我的库的引用,例如。 我想在我的库中公
mongodb 生成的 ID 在您的所有文档中都是唯一的,将其暴露给客户端的风险是什么?就像我有一个 ID 为 12345676543 的用户名 James,将它暴露给 url 是明智的吗 examp
场景:假设攻击者通过对.apk文件进行逆向工程,获取了应用中使用的Push Registration Service的SENDER ID。攻击者开发了一个类似的虚假应用程序,它具有相同/不同的包名,并
当使用 Spring Boot starter 进行 graphql 时,数据获取时抛出的所有异常都在输出控制台中显示为“执行查询时的内部服务器错误”我希望我抛出的 e.message() 的 Gra
我正在尝试使用 Docker 运行 ASP.NET Core 应用程序,并且我想将外部 wwwroot 文件夹公开给容器,以便当我从外部对其进行更改时,它们会自动对我的应用程序可用。这可能吗,使用卷?
我构建了一个 WCF 服务,它为 Web 应用程序公开自身,它接受一个对象并在客户端机器上打印数据。在我的开发机器上运行良好,该服务在我安装它的任何机器上启动并运行。我可以在客户端机器的 Web 浏览
我似乎无法弄清楚这一点。我有一个使用 scikit-learn 训练的模型,保存到一个 .pkl 文件中,我想制作一个 API 来根据它进行预测。 我已经有了进行预测的代码,它在控制台/单元测试中运行
我是一名优秀的程序员,十分优秀!