Docker使用问题【已解决】

刚接触docker,目前我是有一个springboot项目,需要部署到服务器。
我是这样设想的,springboot.jar运行在宿主机。
docker运行nginx和mysql
网络使用宿主机的,就是host,
docker-compose.yml

version: '3'

services:
  mysql:
    image: mysql:latest
    restart: always
    network_mode: host
    environment:
      MYSQL_DATABASE: user
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"
  
  nginx:
    image: nginx:latest
    restart: always
    network_mode: host
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - /www/server/nginx/conf/certs/a.key:/etc/nginx/certs/a.key
      - /www/server/nginx/conf/certs/a.pem:/etc/nginx/certs/a.pem
      - ./nginx:/usr/share/nginx/html

mysql运行在3306,我在宿主机运行我的jar包,没法连接docker的mysql,是怎么回事,jar里面是127.0.0.1:3306
image

我还是推荐你把jar也放到docker里面,都用docker compose了可以把这三个服务编排成一个容器组,放到一个网络里运行,不懂的去问GPT

不过我看你compose配置好像没啥问题,不过有点危险,端口直接暴露在公网了

会不会是服务器的防火墙没开本地,还有既然都用docker了,又是服务器,为啥还要host模式

jar放到docker暂时还不会,需要搞私有镜像?怕jar包泄露啊,啥的,

刚刚把docker容器删除后,重新运行一遍,又可以了,感谢回复 。至于把三个服务都加入到docker我再摸索一下,问问GPT
:slightly_smiling_face:

1 个赞

因为不懂docker内部网络编排 :joy:刚刚开始,半桶水

自己学习一下写dockerfile,本地编译镜像运行就可以了

在服务器上面编译jar的镜像吗?假如jar更新,也需要重新编译?