Tag: 微服务

在Docker容器上连接Postgres数据源的Wildfly Swarm错误

我正在尝试使用Wildfly Swarm,Docker和PostgreSQL作为数据库来构build一个简单的rest服务。 该应用程序在localhost上运行良好(没有docker)。 在docker基础结构上使用数据源连接数据库时遇到问题 这是我的docker.compose.yml : version: '3' services: web: build: . depends_on: – db db: build: ./db ports: – "5432:5432" 我的Web Dockerfile : FROM fabric8/java-jboss-openjdk8-jdk:1.2.3 ENV AB_OFF true ADD megasindico-billing-api-swarm.jar /opt/megasindico-billing-api-swarm.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/opt/megasindico-billing-api-swarm.jar"] PostgreSQL Dockerfile : FROM postgres:9.4-alpine ENV POSTGRES_USER=admin ENV POSTGRES_PASSWORD=admin project-defaults.yml是在哪里configuration我的数据源: swarm: datasources: data-sources: ### [datasource] megasindico-billing-ds: driver-name: […]

重新创buildDocker镜像而不是重用 – 用于微服务

一个微服务停留在一个docker集装箱中。 现在,假设我想升级微服务 – 例如,某些configuration已更改,我需要重新运行它。 我有两个select: 我可以尝试通过在容器启动时运行的脚本来重新使用现有映像,并通过从某个共享卷中读取新configuration(如果存在)来更新微服务。 更新之后,脚本运行微服务。 我可以简单地删除现有的图像和容器,并创build新的图像(新名称)和新的容器与更新的configuration/代码。 解决scheme#2对我来说似乎更加健壮。 没有“更新”过程,只有单个容器的创build。 然而,困扰我的是,如果这个图像的重新创造有一些不好的副作用? 像很多悬挂的图像或类似的东西。 想象一下,在用户使用应用程序的时候,这种情况可能会经常发生 – 例如,如果开发人员尝试了某些事情,他想要使用不同的微服务configuration,他会经常重新启动它。 但一旦configuration好了,这个不会改变。 另外,当我说configuration我不只是意味着configuration文件,而且用户代码等

Dockerize应用程序或机器?

我很抱歉,如果我的问题太基本了,但是我刚刚开始学习docker,并且有一些概念对我来说是不清楚的。 我认为docker是一个function齐全的虚拟机,因此我想将一个服务器转换成一个容器。 然后我开始阅读“dockerizing”应用程序(例如postgresql ),并且我知道Docker文件在执行容器时只能有一个默认指令 。 我读过可以使用一个主pipe协调多个执行指令,但是我开始想知道这是否是最好的方法,还是倾向于微服务架构 ? 为了更好地说明我的观点,我想描述一下我的用例。 我想创build一个提供tomcat(通过servlet部署的服务)和postgreSQL数据库的环境。 理想情况下,我希望服务(和数据库)在相同的主机(在不同的端口上)运行。 为Tomcat创build一个容器,为数据库创build一个容器是最佳做法,还是将它们放在同一个容器中更好? 如果我创build两个不同的容器,我应该使用哪个框架来编排它们? 这个任务是Docker组合吗?

单片(VS)微服务==>线程(vs)进程

我有一个单一的进程有5个线程的单片应用程序。 每个线程完成特定的任务。 想把这个应用程序转移到使用docker的微服务。 如果我看看架构,每个工作线程将成为一个docker进程。 因此,在我看来,单核与微服务在某种程度上变得更像是Thread vs Process讨论。 拥有庞然大物的原始思想是有性能的线程和共享相同的内存。 现在使用微服务拱,我被推到一个stream程模型,可能不适合从性能的angular度来看。 我有点困扰如何解决这个问题。

在启动容器化的微服务的多个实例时处理数据库模式创build和迁移

我想在Docker容器中部署我的微服务。 我希望这些微服务尽可能无状态,只保持状态到数据库。 这意味着有这些要求: 这些服务被部署为docker容器,并使用kubernetes进行编排。 每个服务都可以部署并扩展到多个实例。 服务的每个实例都是相同的。 这意味着它们都必须具有相同的环境variables和传递给它的configuration。 每个实例不应该关心或了解另一个实例。 这些情况应该是无国籍的,不应选举领导人或法定人数。 这导致我处理模式创build和迁移的问题: 如果我有一个使用MySQL或Postgres作为数据存储的服务,如何在首次启动时创build表/模式? 我应该只使用CREATE IF NOT EXIST语句,让实例在启动时“打出来”? 我无法设置一个环境variables来为实例中的一个请求创build表/模式。 如何处理具有上述约束的模式迁移? 有许多操作,比如删除/添加无法封装在事务中的列。

用python在docker上设置rabbitMQ

我对docker相当陌生,我正在学习rabbitMQ。 到目前为止,我已经能够在我的ubuntu vm上以python libary pika的forms运行rabbitMQ。 这工作没有任何问题,但我现在把它放到docker工人的一个小应用程序,不起作用。 这个问题似乎是在设置和所有的方式失败了这一行的代码: connection = pika.BlockingConnection(pika.ConnectionParameters( host=HOST, port=80, credentials=credentials)) 正在导入的variables: USER = "test" PASS = "testpass1" HOST = "dockerhost" 文件: import pika from settings import USER, PASS, HOST def send(message): message = str(message) print 'trying: credentials = pika.PlainCredentials(username=USER, password=PASS)' try: credentials = pika.PlainCredentials(username=USER, password=PASS) except Exception: print 'Failed' print str(Exception) return […]

无法使用Docker将mongodb与Rails容器连接组成

通过rails控制台在Model中插入值时出现此错误。 “Mongo :: Error :: NoServerAvailable:没有可用的服务器匹配首选项:#使用server_selection_timeout = 30和local_threshold = 0.015” 这两个容器运行良好,但Rails无法连接MongoDB。 我只有一个Dockerfile。 我的docker-compose.yml文件内容是: version: '2' services: mongo: image: mongo:3.0 command: mongod –smallfiles –quiet environment: – RAILS_ENV=production – RACK_ENV=production ports: – "27017:27017" app: depends_on: – 'mongo' # – 'redis' build: . ports: – '3000:3000' volumes: – '.:/app' command: rails s -b '0.0.0.0' env_file: – '.env' volumes: […]

APIdevise – 分裂成不同的子域(微服务)

我们的应用程序基于API的第一个架构,目前基于单个域/服务: api.todos.com API的消费者是: 我们的networking前端 我们的移动应用程序 其他业务/公共 我们将为同一个应用程序构build用不同语言编写的新的微服务 。 例如,我们可能开发API服务: 统计 博客/内容 RSS订阅 search 我的问题是围绕处理域。 将每个服务分割成不同的子域是最好的 api.todos.com stats.todos.com content.todos.com rss.todos.com search.todos.com 还是有一个单一的统一的API域,我们做HTTP(第7层)路由到达我们的端点更好。 例如 api.todos.com/todos api.todos.com/stats api.todos.com/content api.todos.com/rss api.todos.com/search 不知道哪一个公共API更可取? 拥有多个子域会更容易,而不必处理中间路由层/代理。

Kubernetes – 为“服务”创build特定的命名空间

在我们的微服务架构中,我们有许多有状态的服务: MongoDB的 MySQL的 Redis的 ElasicSearch 我们还有两个Kubernetes namespaces用于我们的不同环境: 分期 生产 我们在两个环境/命名空间中运行上述每个有状态的服务。 我一直在想,由于预算有限,我们的集群资源有限。 我们是否应该为这些服务创build第三个命名空间,并将它们用于生产环境和临时环境? 例如创build一个 “服务”命名空间? 这种情况下最好的做法是什么? 有什么缺点吗?

与docker使用senecajs

我目前正在一个项目的服务器端是基于nodejs(快递)。 我们主要使用docker-swarm来实现负载平衡和可伸缩性:事实上,我们构build了一个docker镜像并将其部署在4个节点之下,其余部分(负载均衡)由群集组成。 过去几天我一直在阅读关于微服务的概念,并且可以使用docker来构build微服务。 我也读过senecajs可以用来构build微服务。 它们可以结合使用吗? 我不想触摸我们目前的架构,但我仍然有兴趣使用微服务。 因此: senecajs将被用来分离express中的函数并构build微服务 docker-swarm将被用来构build容器(主要用于负载均衡和便于在任何服务器上部署)