尝试从两个未能正常工作的Docker运行命令构建一个Docker Compose文件。

huangapple go评论94阅读模式
英文:

Trying to build a docker-compose file from two docker run commands for two services that is not working

问题

我有两个镜像,mysqldbspringboot-service,它们应该一起运行。当我按顺序运行两个 CLI 命令时,它们之间的交互可以正常工作。

  1. docker run --name mysqldb --network springboot-mysql-net --hostname mysqldb -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=a -e MYSQL_PASSWORD=a -e MYSQL_DATABASE=studentdb -p 3306:3306 -d mysql:latest
  2. docker run --network springboot-mysql-net --name springboot-container -p 8080:8080 -e dbname=mysqldb -d springboot-studentservice

我已经创建了一个 docker-compose 文件,具体代码如下,但是当我运行 docker-compose up 时,Springboot 应用程序无法连接到数据库。它抛出的错误是

  1. 2023-03-07 09:52:49 Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

docker-compose

  1. services:
  2. mysqldb:
  3. image: mysql
  4. restart: always
  5. environment:
  6. MYSQL_ROOT_PASSWORD: 1234
  7. MYSQL_USER: a
  8. MYSQL_PASSWORD: a
  9. MYSQL_DATABASE: studentdb
  10. hostname: mysqldb
  11. ports:
  12. - "3306:3306"
  13. networks:
  14. - springboot-mysql-net
  15. springboot-container:
  16. image: springboot-studentservice
  17. environment:
  18. dbname: mysqldb
  19. ports:
  20. - "8080:8080"
  21. depends_on:
  22. - mysqldb
  23. networks:
  24. - springboot-mysql-net
  25. networks:
  26. springboot-mysql-net:
  27. driver: bridge

对于为什么会发生这种情况,我略感困惑!将不胜感激任何帮助。

英文:

I have two images mysqldb and a springboot-service that are meant to be runned together. I have gotten the interaction between both to work when running the two CLI commands sequentially.

  1. docker run --name mysqldb --network springboot-mysql-net --hostname mysqldb -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=a -e MYSQL_PASSWORD=a -e MYSQL_DATABASE=studentdb -p 3306:3306 -d mysql:latest
  2. docker run --network springboot-mysql-net --name springboot-container -p 8080:8080 -e dbname=mysqldb -d springboot-studentservice

I have created a docker-compose file with the following code, but when I run docker-compose up, the Springboot application is unable to connection to the db. The error it throws is

  1. 2023-03-07 09:52:49 Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

docker-compose

  1. services:
  2. mysqldb:
  3. image: mysql
  4. restart: always
  5. environment:
  6. MYSQL_ROOT_PASSWORD: 1234
  7. MYSQL_USER: a
  8. MYSQL_PASSWORD: a
  9. MYSQL_DATABASE: studentdb
  10. hostname: mysqldb
  11. ports:
  12. - "3306:3306"
  13. networks:
  14. - springboot-mysql-net
  15. springboot-container:
  16. image: springboot-studentservice
  17. environment:
  18. dbname: mysqldb
  19. ports:
  20. - "8080:8080"
  21. depends_on:
  22. - mysqldb
  23. networks:
  24. - springboot-mysql-net
  25. networks:
  26. springboot-mysql-net:
  27. driver: bridge

Am slightly confused as in to why this happens! Help will be appreciated.

答案1

得分: 1

你可以尝试删除 mysqldb 端口。

  1. services:
  2. mysqldb:
  3. image: mysql
  4. restart: always
  5. environment:
  6. MYSQL_ROOT_PASSWORD: 1234
  7. MYSQL_USER: a
  8. MYSQL_PASSWORD: a
  9. MYSQL_DATABASE: studentdb
  10. hostname: mysqldb
  11. networks:
  12. - springboot-mysql-net
  13. springboot-container:
  14. image: springboot-studentservice
  15. environment:
  16. dbname: mysqldb
  17. ports:
  18. - "8080:8080"
  19. depends_on:
  20. - mysqldb
  21. networks:
  22. - springboot-mysql-net
  23. networks:
  24. springboot-mysql-net:
  25. driver: bridge

并且你创建了 'studentdb' 数据库吗?如果没有,你需要为 mysqldb 设置一个卷并创建它。

英文:

You could try to remove mysqldb ports.

  1. services:
  2. mysqldb:
  3. image: mysql
  4. restart: always
  5. environment:
  6. MYSQL_ROOT_PASSWORD: 1234
  7. MYSQL_USER: a
  8. MYSQL_PASSWORD: a
  9. MYSQL_DATABASE: studentdb
  10. hostname: mysqldb
  11. networks:
  12. - springboot-mysql-net
  13. springboot-container:
  14. image: springboot-studentservice
  15. environment:
  16. dbname: mysqldb
  17. ports:
  18. - "8080:8080"
  19. depends_on:
  20. - mysqldb
  21. networks:
  22. - springboot-mysql-net
  23. networks:
  24. springboot-mysql-net:
  25. driver: bridge

And do you create 'studentdb' database? If not you have to set a volum for mysqldb and create it.

huangapple
  • 本文由 发表于 2023年3月7日 10:02:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/75657430.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定