展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

docker容器通讯

  • 后端项目
# controller
@RestController
public class TestController {
@Resource
private BookMapper bookMapper;
@Resource
private RedisTemplate<String, String> redisTemplate;
@RequestMapping("/testmysql")
public Book test1(){
return bookMapper.getOne(1);
}
@RequestMapping("/testredis")
public String test2(){
ValueOperations<String, String> operations = redisTemplate.opsForValue();
operations.set("hello1","world");
String hello = operations.get("hello1");
return hello;
}
}
# yml
server:
port: 8596
spring:
application:
name: back
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://126.326.226.127:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
mvc:
view:
suffix: ".html"
redis:
database: 0
host: 126.326.226.127
password: 123456
client-type: lettuce
lettuce:
pool:
max-idle: 8
min-idle: 0
max-active: 8
max-wait: -1
timeout: 30000
mybatis:
configuration:
map-underscore-to-camel-case: true
logging:
level:
com:
example:
back: debug
  • mysql

  • redis

  • 本地测试

  • 部署到服务器测试

# 服务器创建1个网络
docker network create -d bridge my-bridge
# 查看mysql容器和redis容器的名称
[root@VM-12-15-centos java111]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1911794b34ad back:1.0 "sh -c 'java $JAVA_O…" About a minute ago Up 2 seconds 0.0.0.0:8596->8596/tcp, :::8596->8596/tcp back
d06781bd43b9 nginx "/docker-entrypoint.…" 2 hours ago Up 17 minutes 80/tcp, 0.0.0.0:8113->8113/tcp, :::8113->8113/tcp my-nginx
23f5e863d55d nacos/nacos-server "bin/docker-startup.…" 30 hours ago Up 26 hours 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp nacos
a6b6d0d0bd76 kdvolder/jdk8 "/bin/sh -c /bin/bash" 3 days ago Up 26 hours jdk1.8
4bf078bcf7e0 redis:latest "docker-entrypoint.s…" 2 weeks ago Up 38 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp gifted_mahavira
1ea2efbece6c mysql:8.0.27 "docker-entrypoint.s…" 4 weeks ago Up 26 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
# 将mysql和redis容器设置为该网络
[root@VM-12-15-centos java111]# docker network connect my-bridge mysql
[root@VM-12-15-centos java111]# docker network connect my-bridge gifted_mahavira
# 查看mysql容器的ip
[root@VM-12-15-centos java111]# docker inspect 1ea2efbece6c | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
"IPAddress": "172.21.0.3",
# 查看redis容器的ip
[root@VM-12-15-centos java111]# docker inspect 4bf078bcf7e0 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.6",
"IPAddress": "172.17.0.6",
"IPAddress": "172.21.0.4",
  • 配置yml
server:
port: 8596
spring:
application:
name: back
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://172.21.0.3:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
mvc:
view:
suffix: ".html"
redis:
database: 0
host: 172.21.0.4
password: 123456
client-type: lettuce
lettuce:
pool:
max-idle: 8
min-idle: 0
max-active: 8
max-wait: -1
timeout: 30000
mybatis:
configuration:
map-underscore-to-camel-case: true
logging:
level:
com:
example:
back: debug
  • 打包后上传到服务器
# 同一目录下编写Dockerfile
# 因为项目使用的java11
FROM chniny/java:11.0.12
VOLUME /tmp
# jar包名称
ADD back-0.0.1-SNAPSHOT.jar /app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
# 在Dockerfile路径下执行构建命令
[root@VM-12-15-centos java111]# docker build -t back:1.0 .
Sending build context to Docker daemon 32.44MB
Step 1/6 : FROM chniny/java:11.0.12
---> 66415a5e4a62
Step 2/6 : VOLUME /tmp
---> Running in 0b517316ddb9
Removing intermediate container 0b517316ddb9
---> e3d915bc0315
Step 3/6 : ADD back-0.0.1-SNAPSHOT.jar /app.jar
---> edee160c3db1
Step 4/6 : RUN sh -c 'touch /app.jar'
---> Running in 7ad7541a0cb6
Removing intermediate container 7ad7541a0cb6
---> 68137743ad8d
Step 5/6 : ENV JAVA_OPTS=""
---> Running in 5e00834292dc
Removing intermediate container 5e00834292dc
---> 911f224f6c2e
Step 6/6 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
---> Running in aa847a27b646
Removing intermediate container aa847a27b646
---> c9bdd8b920c8
Successfully built c9bdd8b920c8
Successfully tagged back:1.0
# 启动该镜像
[root@VM-12-15-centos java111]# docker run -it --name back -p 8596:8596 back:1.0
# 不关闭退出前台
ctrl + p + q
# 将后端镜像设置为同一网段
docker network connect my-bridge back
# 测试
[root@VM-12-15-centos java111]# docker exec -it back ping mysql
PING mysql (172.21.0.3) 56(84) bytes of data.
64 bytes from mysql.my-bridge (172.21.0.3): icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from mysql.my-bridge (172.21.0.3): icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from mysql.my-bridge (172.21.0.3): icmp_seq=3 ttl=64 time=0.058 ms
# 浏览器测试

  • 测试3
  • 配置yml,将ip改为容器名称,确保容器设置了名称
[root@VM-12-15-centos java111]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
337c3b18ccd5 back:1.0 "sh -c 'java $JAVA_O…" 5 minutes ago Up 5 minutes 0.0.0.0:8596->8596/tcp, :::8596->8596/tcp back
d06781bd43b9 nginx "/docker-entrypoint.…" 20 hours ago Up 17 hours 80/tcp, 0.0.0.0:8113->8113/tcp, :::8113->8113/tcp my-nginx
23f5e863d55d nacos/nacos-server "bin/docker-startup.…" 47 hours ago Up 4 minutes 0.0.0.0:8848->8848/tcp, :::8848->8848/tcp nacos
a6b6d0d0bd76 kdvolder/jdk8 "/bin/sh -c /bin/bash" 3 days ago Up 44 hours jdk1.8
4bf078bcf7e0 redis:latest "docker-entrypoint.s…" 2 weeks ago Up About an hour 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
1ea2efbece6c mysql:8.0.27 "docker-entrypoint.s…" 4 weeks ago Up 44 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
server:
port: 8596
spring:
application:
name: back
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql:3306/jdbc?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
mvc:
view:
suffix: ".html"
redis:
database: 0
host: redis
password: 123456
client-type: lettuce
lettuce:
pool:
max-idle: 8
min-idle: 0
max-active: 8
max-wait: -1
timeout: 30000
mybatis:
configuration:
map-underscore-to-camel-case: true
logging:
level:
com:
example:
back: debug
docker rename 原容器名称 新容器名称
# 清理此容器的网络占用
docker network disconnect --force 网络模式 容器名称
docker network disconnect --force bridge containerName
# 简查是否还有同名容器占用
docker network inspect 网络模式
docker network inspect bridge
# 查看创建的所有网络
docker network ls
# 查看日志
docker logs -f 容器名
  • 测试

  • 编写1个vue项目

# 设置默认路由
axios.defaults.baseURL = 'http://124.222.5.107:8596'
# 发送请求
export default {
data() {
return {
books: []
}
},
created(){
this.$http.get("testmysql").then(resp => {
console.log("mysql resp--->" + resp.id + ":" + resp.name + ":" + resp.price)
}).catch(err => {
console.log(err)
}),
this.$http.get("testredis").then(res => {
console.log("redis res--->" + res)
}).catch(err => {
console.log(err)
})
}
}
  • 测试
posted @   DogLeftover  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示