Tag: 微服务

如何让docker工具箱与.net core 2.0项目一起工作

我收到一个错误,试图使用我的.NET核心2.0项目的Dockerfunction。 我收到一条错误消息说 Visual Studio容器工具要求Docker在构build,debugging或运行容器化项目之前运行。 有关更多信息,请参阅: http : //aka.ms/DockerToolsTroubleshooting 我跟着链接,并意识到我有Windows 10 Home x64,并不得不安装Docker Toolbox,而不是Docker for Windows。 现在它安装了这个可执行文件 Docker快速入门terminal 这是否应该启动docker服务? 我曾尝试运行这个可执行文件,它似乎工作。 我的容器正在运行,但Visual Studio容器工具的错误仍然存​​在。 我错过了什么? 为了在Visual Studio 2017中使用Docker容器支持,是否需要比Home更高版本的Windows? 更新: 我试图按照Quetzcoatl的build议,我仍然在Visual Studio中得到了关于这些工具的同样的错误。 这是我在Docker快速入门terminal中运行的内容。 我试图在Visual Studio成功打开项目之后构build项目,并且仍然收到有关容器工具的上述错误。 我的devenv.exe文件位于 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ devenv.exe 和我的解决scheme文件位于 D:\ Development \ Visual Studio \ […]

微服务和数据库

在微服务架构中部署数据库的最佳实践是什么,更准确地说是在分布式环境中,比如docker群? 微服务原则规定,每个服务应该是无状态的,以实现扩展。 由于数据库显然有一个状态,它应该在群集之外的固定位置上生存,在群集初始化之前进行部署和configuration? 我很困惑,因为所有的docker组合示例在服务定义中包含数据库容器。 但事情并不那么简单。 在准备使用之前,数据库通常需要大量的configuration。 另外,docker员在协调服务启动顺序方面很糟糕。 如果将数据库和服务一起部署在Docker群中是一个很好的做法,那么如何确保Cricial数据的一致性和持久性呢?

在Docker领事和Spring Boot服务 – 不注销

所以我们有用Spring-Boot编写的Java微服务,使用Consul进行服务发现和configurationpipe理,并在Docker容器中运行。 所有这些都在工作,但是当一个容器死亡或一个服务重新启动时,旧的service-id将永远不会在Consul中消失,永久的服务在Consul UI中显示为“Failing”,即使新容器已经注册并显示所有绿色。 我们没有使用心跳,但是我找不到有关领事与心跳检查之间区别的文档。 这是我的bootstrp.yml spring: application: name: my-service cloud: config: enabled: false consul: host: ${discovery.host:localhost} port: ${discovery.port:8500} config: watch: wait-time: 30 delay: 10000 profile-separator: "-" format: FILES discovery: prefer-ip-address: true instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} 还有其他设置可以启用心跳,但是文档中提到了一些关于Consul群集的更多信息。 有没有人设法得到Consul和Spring Boot / Docker服务实际上自动注销? 它实际上不会造成任何实际的问题,但它使Consul UI很无用,实际上监视up / down服务。

如何将存储库维护到单个存储库

我有一个每个微服务的存储库(“A”,“B”,..)。 资源库的结构如下所示: A |-dockerfile |-src |-Java |-Groovy 由于所有这些存储库都属于名为“WholeProject”的项目,因此我想维护一个存储库“WholeProject”,其格式如下所示: WholeProject |-docker-compose.yml |-µS |-A |-B |-.. 所以我可以很容易地维护一个docker-compose文件和一个包含所有关于我的项目的相关信息的存储库。 这是一个好主意吗 ? 我该怎么做?

使用docker-compose与多个存储库

我目前正在努力部署我的服务,我想问一下,当你必须处理多个存储库时,什么是正确的方法。 版本库是独立的,但要运行在生产环境中,一切都需要启动。 我的设置: Git存储库后端: 后端项目的Rails docker-compose:后端(公开3000),db和redis Git仓库前端 Express.js服务器 docker-compose :(揭露4200) 两者都可以独立运行,testing可以由CI执行 Git仓库Nginx的生产 需要连接到其他两个服务(同一个dockernetworking) 将请求转发给正确的服务 我已经尝试将这两个服务作为子模块包含到Nginx存储库中,并使用nginx回购的docker-compose,但我并不满意。

docker集装箱之间redirect的最佳做法

鉴于我有多个在Docker容器中运行的Web应用程序,我希望能够让用户在服务中redirect到另一个服务。 我不知道如何实现这一点 – 特别是如果我想我的应用程序可以从一个docker主机移植到不同的主机。 假设我们有一个将用户redirect到ServiceB的ServiceA。 所以我们有一个关系 ServiceA –> ServiceB 一种方法是静态分配端口和主机名,并将它们设置为我的Web服务的环境variables – 这是我不喜欢的,因为我不想关心在哪个端口上运行哪个服务。 第二种方法是使用像nginx这样的代理并链接服务并使用代理主机和端口。 但是这需要在将服务移动到不同的主机时更改代理configuration。 想到的第三种方法是使用etcd和大使来注册和解决服务。 所以ServiceA将会使用一个ServiceB-Ambassador来查找etcd中的ServiceB。 这导致许多docker集装箱只是为了连接服务。 你更喜欢哪种方式? 还是有不同的方法? 编辑 真正的问题是将ServiceB的uri注入到ServiceA中,所以我可以使用像-DserviceB.uri=<serviceUri>这样的参数启动我的ServiceA,以便serviceA可以构build正确的redirect头。

Golang Microservices无法使用Docker for Mac进行通信

我想获得两个容器,每个运行不同的golang服务。 这两个服务都是用net/http包build立的。 我有一个API前端作为一个和身份validation服务后端。 这是我的撰写文件: version: "2" services: staticfiles: build: ./files volumes: – /public – /views api: build: ./api environment: – PORT=8080 – BASE_URL=https://example.org – AUTH_HOST=auth – AUTH_PORT=8080 – VIEW_DIR=/views – PUBLIC_DIR=/public ports: – "80:8080" volumes_from: – staticfiles:ro links: – auth depends_on: – staticfiles db: build: ./postgres environment: – POSTGRES_USER=inheritor – POSTGRES_DB=inheritor auth: build: ./auth expose: […]

水平缩放的微服务应该共享数据库的实例吗?

鉴于拥有关系数据库并需要横向扩展的微服务,我看到了两种configuration数据库服务器的方法: 为每个服务实例提供自己的具有耦合stream程生命周期的DB服务器实例 要么 让这些实例连接到一个共享的(通过相同服务的相同实例)独立的数据库服务器或集群 通过事件驱动架构和前一种方法,微服务的每个实例都需要处理每个事件并采取适当的操作来改变自己的孤立状态。 这似乎效率低下。 采用后一种方法,只有一个实例需要处理该事件,以达到相同的效果,而是作为共享状态的变化。 我们必须确保每个事件只由给定的微服务的一个实例来处理(这是微不足道的?)以避免冲突。 在这里,首选方法是否有共识? 你的经验教训你什么教训?