我是码头工人的新宝宝。我正在Spring Boot应用程序中使用docker。下面是我的档案。
application.properties文件:
spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:3306/${DATABASE_NAME}?allowPublicKeyRetrieval=true&useSSL=true
spring.datasource.username = root
spring.datasource.password = root
server.port=8443
FROM openjdk:latest
ADD target/app.jar app.jar
EXPOSE 8443
ENTRYPOINT ["java","-jar","app.jar", "--spring.profiles.active=docker"]
version: '3.1'
services:
mysqlDb:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=springdemo
- MYSQL_USER=root
- MYSQL_PASSWORD=root
- DATABASE_HOST= 192.168.0.1
volumes:
- /data/mysql
ports:
- "3306:3306"
container_name: mysql-db
springbootdocker:
image: xyz/signup
restart: always
ports:
- "8080:8080"
depends_on:
- mysqlDb
links:
- mysqlDb
environment:
- DATABASE_HOST= mysqlDb
- DATABASE_USER=root
- DATABASE_PASSWORD=root
- DATABASE_NAME=springdemo
- DATABASE_PORT=3306
healthcheck:
test: ["CMD","curl","-f","http://localhost:8080/health"]
interval: 1m30s
timeout: 10s
retries: 3
问题的第一部分解决了:当我运行应用程序时,我得到以下错误:
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: java.net.UnknownHostException: ${DATABASE_HOST}
1)我想要达到的-
问题来了:
>
当我试图在本地运行应用程序时,只有在application.Properties类中编写这一行时,才能够创建jar。
spring.datasource.url=jdbc:mysql:/127.0.0.1:3306/springdemo?AllowPublicKeyRetrieval=true&usessl=true
>
所以,我想,我正在不同的系统/服务器中运行docker-compose。那里的ip地址不同。
所以,我把url改成了这个:
spring.datasource.url=jdbc:mysql:/192.168.0.1:3306/springdemo?AllowPublicKeyRetrieval=true&usessl=true
192.168.0.1 - this ip is for the diffrent server, where i want to run the docker-compose file
但是当我运行spring boot应用程序时,我无法运行该应用程序,因为它会出现与上面提到的几乎相同的错误,即连接拒绝。所以我无法创建这个罐子,无法创建图像。所以我的想法在这里也失败了。
spring.datasource.url=jdbc:mysql:/${DATABASE_HOST}:3306/${DATABASE_NAME}?AllowPublicKeyRetrieval=true&usessl=true
DATABASE_HOST-您可以在docker-compose文件中找到它
我想可能是这样的:${DATABASE_HOST},将从docker-compose中选择DATABASE_HOST的值。
但是我的想法失败了,我在运行应用程序时遇到了top中提到的错误。无法创建jar,因此无法创建映像。
http://localhost:8080/dockerex
在我的Controller类中:
@RestController
@RequestMapping(value = "/dockerex")
public class SpringBootDockerController {
@GetMapping
public String check() {
return "checking";
}
}
当我检查容器时,ip地址为空:conatiner的快照:
[
{
"Id": "7664bab5ed452e3e2243e1802010240ab5a3eb817af6164e985b10e729ff4c8f",
"Created": "2020-02-04T17:30:08.5351511Z",
"Path": "java",
"Args": [
"-jar",
"app.jar",
"--spring.profiles.active=docker"
],
"State": {
"Status": "running"
.......................
"PortBindings": {
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
},
很好,它工作了,但是在这里您看到您以前使用的是DB_HOST,现在您使用的是database_host=mysqlDb,它当前指向您的mysql服务名称。可以在docker Compose创建的单个网络中发现该服务名称。您正在硬编码db_host=192.168.0.1并尝试使用此IP进行连接,该IP在docker compose创建其网络时无效。
我的docker撰写文件如下所示: 如果我在浏览器中键入http://localhost:15672,我将获得Rabbitmq界面,但是如果我试图像这样从我的探索项目连接: 然后它在队伍中断了 错误是说 ExtendedSocketException:连接被拒绝127.0。0.1:5672系统。网插座。插座EndConnect(IAsyncResult异步结果) ConnectFailureExc
我在学Angularjs。作为其中的一部分,我想学习使用端到端测试。目前,我有一个目录结构如下所示: 运行该命令时,收到以下错误: 我做错了什么?
我使用的是Postgres 9.1.5。JDBC在第一个实例中运行良好,但当我再次尝试时,它开始拒绝连接。例如,我使用JDBC登录到我的web应用程序,效果很好。但是,我尝试使用连接获取其他数据,它引发了一个异常:连接被拒绝。我确信我的代码没有问题,因为上次运行良好的登录JDBC也引发了一个异常:连接被拒绝。 重新启动postgres windows服务后,它再次工作。然后,登录JDBC,获取一些
我试图实现一个TCP连接,在服务器端一切正常,但当我运行客户端程序(从客户端计算机)时,我得到以下错误: 服务器代码: 客户端代码:
我试图通过Jedis客户端连接到redis服务器,但在连接时我得到了以下异常和堆栈跟踪- redisconnectionFailureException:无法获得Jedis连接;嵌套异常是redis.clients.jedis.exceptions.jedisconnectionException:无法从位于org.springframework.data.redis.connection.jed