我在Docker容器中运行Java应用程序,该容器应该在其他容器中连接MySQL。尝试使用表格中建议的多个选项,但实际上没有任何效果。这是我的Docker Compose文件:
version: "3" services: app: build: context: ./ dockerfile: /src/main/docker/Dockerfile image: app1 environment: - DB_HOST=Imrans-MacBook-Pro.local - DB_PORT=3306 ports: - 8080:8080 networks: - backend depends_on: - mysql mysql: image: mysql:5.7.20 hostname: mysql environment: - MYSQL_USER=root - MYSQL_ALLOW_EMPTY_PASSWORD=yes - MYSQL_DATABASE=app1 ports: - 3306:3306 command: mysqld --lower_case_table_names=1 --skip-ssl --character_set_server=utf8 --explicit_defaults_for_timestamp networks: - backend networks: backend: driver: bridge
DB_HOST=Imrans-MacBook-Pro.local我的笔记本电脑的名字在哪里。这没有用。有人建议可以这样尝试使用容器名称DB_HOST= mysql,但从未使用过。
DB_HOST=Imrans-MacBook-Pro.local
DB_HOST= mysql
唯一的事情是时不时地传递笔记本电脑的IP地址,而这不是我想要的。那么,在这些容器之间创建通信的好方法是什么?
过去,我无需在Docker Compose中显式设置主机网络部分就可以使用它。由于Docker Compose文件中的 Docker 映像相互放置在Docker网络中,因此您真的不需要做任何事情就可以使它工作:默认情况下,您应该能够连接到Spring应用程序的容器中并能够ping mysql解决问题。
ping mysql