展开
拓展 关闭
订阅号推广码
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 @ 2022-04-26 09:14  DogLeftover  阅读(83)  评论(0)    收藏  举报