设想:
嘿,我正在运行一个带有容器的 docker compose。这个 compose 文件在 Windows 10 上的 ma 本地 docker 桌面上就像魅力一样。我用网络配置了我自己的网络driver bridge.
现在我想在带有 ubuntu vm 的外部服务器上运行 docker compose。我有到服务器的远程腻子连接。当我运行docker-compose up我所有的服务成功启动。我还运行了 portainer 以对此进行 gui 控制。
问题: Lika 我说过,我所有的服务都在运行。与我的本地设置的唯一区别是我将 portainer 作为单个容器启动。我无法使用浏览器连接到 portainer 并检查整个设置。但是当我想调用我的公开容器时,我无法获得连接并出现连接失败错误。当我查看容器规范中 portainer 中的 IP 地址列时,我发现 portainer 的 IP 与我的 docker compose 容器不同。所以 portainer 有 172.17.xxx 并且所有其他容器都以 172.20.xxx 开头,显然我的专用网络中暴露的端口没有暴露给主机桥接网络。
我希望 我的公开端口可以通过我的虚拟机的 ip 使用,例如我的 portainer 实例。
想法 我对 docker 很陌生,所以我检查了文档,我认为是因为描述:
在用户定义的桥接网络中,不支持链接。您可以在此网络中的容器上公开和发布容器端口。如果您想让桥接网络的一部分可供外部网络使用,这将非常有用。
..作为网络驱动程序的网桥将我的网络连接到本地主机互联网连接。
问题: 当我从我的 compose 中运行 portainer 时有什么问题吗?当我在外部服务器上而不是在我的本地主机上运行我的撰写时,还有什么需要记住的吗?
撰写网络配置文件:
networks:
my_net:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
我的撰写版本是 2.1
更新: …
场景: 我在 Spring 中开发了一个使用 mysql 8 数据库的微服务。这个数据库必须被初始化(创建一个数据库,一些表和数据)。在我的主机上,我使用 data.sql 和 schema.sql 脚本初始化了数据库。问题是,我必须设置:
spring.datasource.initialization-mode=always
Run Code Online (Sandbox Code Playgroud)
对于第一次执行。这以我想要的方式初始化我的数据库。对于未来的运行,我必须评论这个命令。非常难看的解决方案,但我找不到更好的解决方案,而且我现在对这个问题没有任何回应。我认为测试它是可以的,但我肯定必须改进它。目前我想通过 docker compose 使用 docker 运行我的服务。
预期: 这是 docker-compose 文件。相当简单。我对 docker 世界完全陌生,所以我想一步一步地继续。
Run Code Online (Sandbox Code Playgroud)version: '3' services:usermanagement-service: build: ./UserManagementService restart: on-failure ports: - "7778:7778" links: - mysqldb depends_on: - mysqldb mysqldb: build: ./CustomMySql volumes: - ./mysql-data:/var/lib/mysql restart: on-failure environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: userdb MYSQL_USER: testuser MYSQL_PASSWORD: testuser expose: - "3600"
我期待,我的数据库被一个用户初始化,并且在第一次运行时我的微服务用数据初始化数据库。因此,在下次开始撰写之前,我必须注释该命令并重建映像。(我知道,丑)
问题:
所以除了这个丑陋的解决方案之外,我还遇到了运行时问题。在docker-compose up我的微服务上比数据库的 init 快。所以它试图调用导致错误的数据库。因为restart on failure微服务又出现了。现在它可以工作了,因为 db 的 init 已经完成。
解决方案: 我搜索了 …
嗨,我是python的入门者,我想在我的笔记本电脑(Windows 10)和将成为Master的BLE设备之间创建BLE连接。我安装了Bluez,可以检测到Bluetooth设备(例如智能手机),但没有检测到仅支持BLE的设备。我想下载gattlib,pip install gattlib但是得到OSError: Not supportet OS的结论是,我不能在Windows 10上以这种方式这样做。那么,除了在笔记本电脑上安装Linux之外,还有其他可能性吗?感谢大伙们
以下场景:
我有两个微服务 A 和 B。服务 A 是一个承载客户端,它有一个开放的 api 并接收来自必须由 keycloak 授权的客户端的请求。现在我想从服务 A 向服务 B 发送一个授权请求,它也是一个承载客户端。
我想过在 webclient builder 过程中将功能添加为过滤器功能,例如
@Bean
WebClient webClient() {
return WebClient.builder()
.filter(authHeader())
.build();
}
private ExchangeFilterFunction authHeader(String token) {
return (request, next) -> next.exchange(ClientRequest.from(request).headers((headers) -> {
headers.setBearerAuth(token);
}).build());
}
Run Code Online (Sandbox Code Playgroud)
这是我在另一个问题中找到的一个例子。这对我来说似乎是正确的方法,但我可以在配置的那个阶段提供“字符串令牌”参数吗?我只是从 RestTemplate 切换到 Webclient,很抱歉,这是一个转储问题。
编辑:我可以在构建新的 Webclient 时手动设置标题。
return WebClient.builder().defaultHeader("Authorization", "Bearer "+ context.getTokenString()).build();
Run Code Online (Sandbox Code Playgroud)
正如我从 RestTemplate 知道的,它可以用作单例。还有一个 KeyCloakRestTemplate 会自动注入标头。
Webclient 是不可变的,所以当我注入它时,我不能只使用它并在之后添加标头。此外,我无法在启动时设置此标头,因为我必须等待获取承载标头并将其传入的请求。所以我想除了这样做之外没有其他方法吗?
我有一个模型:
class Cars(BaseModel):
numberOfCars: int = Field(0,alias='Number of cars')
Run Code Online (Sandbox Code Playgroud)
我有一个字典:
{
"Number of cars":3
}
Run Code Online (Sandbox Code Playgroud)
如何使用此模型创建 Cars 实例?使用此模型时是否有类似“by_alias”的内容?
我刚开始使用微服务,我想创建一个简单的 Eureka 服务器来执行我的 Serviceregistry。现在我只想在本地主机上运行服务器,稍后我想添加一个注册到它的示例微服务。问题是我在尝试启动 Eureka Server 时遇到错误。我在 Eclipse 中使用 Spring 和 Maven 在 ubuntu vm 中进行开发。
我的 POM.xml 如下所示:
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<groupId>com.example.cloud</groupId>
<artifactId>eureka-service-new</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-service-new</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId> …Run Code Online (Sandbox Code Playgroud) 我开发了一个Spring应用程序,该应用程序将JSON保存在MongoDb中。客户端可以输入时间间隔开始和结束来搜索数据。为了能够使用正则表达式(lte和gte)从数据库中获取数据,我将Time保存为UnixTimeStamp:
"TimeStamp": {
"StartTime": 1549371540000,
"EndTime" : 1549371540000,
"StartTimeZone":"Europe/Berlin",
"EndTimeZone":"Europe/Berlin"
}
Run Code Online (Sandbox Code Playgroud)
过滤有效,但结果如下:
"TimeStamp": {
"StartTimeZone": "Europe/Berlin",
"EndTimeZone": "Europe/Berlin",
"EndTime": {
"$numberLong": "1549371540000"
},
"StartTime": {
"$numberLong": "1549371540000"
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用$ numberLong键获取键值对而不是StartTime对象?我也在考虑使用yyyy_mm_ddTHH:MM:SS + -Offset节省aso Iso格式的时间
但是据我所知,我只能用正则表达式来过滤这种格式的时间。处理时间是项目的重要组成部分,我想确保以最佳实践方式对待这一部分。
编辑:在我的代码我
for (Document doc : collection.find(query).projection(Projections.include(projectionList))) {
//Save the query result as a List of JSON-Objects
dataList.add(doc.toJson());
}
Run Code Online (Sandbox Code Playgroud)
将结果另存为json列表。我知道不赞成使用toJson方法,但无法找到一种将文档转换为JSON表示法的方法。
docker ×2
spring-boot ×2
containers ×1
eclipse ×1
format ×1
init ×1
java ×1
json ×1
maven ×1
mongodb ×1
mysql ×1
networking ×1
oauth ×1
pydantic ×1
python ×1
python-3.x ×1
time ×1
tomcat ×1
webclient ×1
windows-10 ×1