使用Docker Compose在端口3307上运行MySQL

前端之家收集整理的这篇文章主要介绍了使用Docker Compose在端口3307上运行MySQL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图在一台机器上创建多个Prisma数据库服务.我无法使用Docker Compose在3306以外的端口上创建MySQL数据库.

泊坞窗,compose.yml

  1. version: '3'
  2. services:
  3. hackernews:
  4. image: prismagraphql/prisma:1.8
  5. restart: always
  6. ports:
  7. - "${CLIENT_PORT}:${INTERNAL_PORT}"
  8. environment:
  9. PRISMA_CONFIG: |
  10. port: $INTERNAL_PORT
  11. managementApiSecret: $PRISMA_MANAGEMENT_API_SECRET
  12. databases:
  13. default:
  14. connector: MysqL
  15. host: MysqL
  16. port: $sql_INTERNAL_PORT
  17. user: root
  18. password: $sql_PASSWORD
  19. migrations: true
  20. MysqL:
  21. image: MysqL:5.7
  22. restart: always
  23. environment:
  24. MysqL_ROOT_PASSWORD: $sql_PASSWORD
  25. volumes:
  26. - ./custom/:/etc/MysqL/conf.d/my.cnf
  27. - MysqL:/var/lib/MysqL
  28. volumes:
  29. MysqL:

泊坞窗,compose.override.yml

  1. version: '3'
  2. services:
  3. MysqL:
  4. expose:
  5. - "${sql_INTERNAL_PORT}"
  6. ports:
  7. - "${sql_CLIENT_PORT}:${sql_INTERNAL_PORT}"

错误

  1. hackernews_1 | Exception in thread "main" java.sql.sqlTransientConnectionException: database - Connection is not available,request timed out after 5008ms.
  2. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548)
  3. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186)
  4. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)
  5. hackernews_1 | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83)
  6. hackernews_1 | at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:18)
  7. hackernews_1 | at slick.jdbc.JdbcBackend$BaseSession.sql.sqlNonTransientConnectionException: Could not connect to address=(host=MysqL)(port=3307)(type=master) : Connection refused (Connection refused)
  8. hackernews_1 | at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:161)
  9. hackernews_1 | at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.connException(ExceptionMapper.java:79)
  10. hackernews_1 | at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1040)
  11. hackernews_1 | at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490)
  12. hackernews_1 | at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144)
  13. hackernews_1 | at org.mariadb.jdbc.Driver.connect(Driver.java:90)
  14. hackernews_1 | at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
  15. hackernews_1 | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
  16. hackernews_1 | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
  17. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
  18. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
  19. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
  20. hackernews_1 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
  21. hackernews_1 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)

码头工人

  1. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  2. ab721996469d MysqL:5.7 "docker-entrypoint.s…" 42 minutes ago Up 55 seconds 3306/tcp,0.0.0.0:3307->3307/tcp two_MysqL_1
  3. 7aab98e2b8d7 prismagraphql/prisma:1.8 "/bin/sh -c /app/sta…" 2 hours ago Restarting (1) Less than a second ago two_hackernews_1

.ENV

  1. sql_PASSWORD=myuniquepassword
  2. sql_INTERNAL_PORT=3307
  3. sql_CLIENT_PORT=3307
最佳答案
变量sql_INTERNAL_PORT可能具有3307值.您需要将其更改为3306.

此外,您可以删除

  1. expose:
  2. - "${sql_INTERNAL_PORT}"

线. MysqL已经公开了3306端口.

集群中的所有应用程序都使用内部端口(在MysqL情况下为3306).外部端口(在部分端口中)只需要外部字通信.

如果你想拥有几个数据库,你需要更改docker-compose这样的东西:

  1. version: '3'
  2. services:
  3. hackernews:
  4. image: prismagraphql/prisma:1.8
  5. restart: always
  6. ports:
  7. - "${CLIENT_PORT}:${INTERNAL_PORT}"
  8. environment:
  9. PRISMA_CONFIG: |
  10. port: $INTERNAL_PORT
  11. managementApiSecret: $PRISMA_MANAGEMENT_API_SECRET
  12. databases:
  13. default:
  14. connector: MysqL
  15. host: MysqL_first
  16. port: 3306
  17. user: root
  18. password: $sql_PASSWORD
  19. migrations: true
  20. second:
  21. connector: MysqL
  22. host: MysqL_second
  23. port: 3306
  24. user: root
  25. password: $sql_PASSWORD
  26. migrations: true
  27. MysqL_first:
  28. image: MysqL:5.7
  29. restart: always
  30. environment:
  31. MysqL_ROOT_PASSWORD: $sql_PASSWORD
  32. ports:
  33. - 3307:3306
  34. volumes:
  35. - ./custom/:/etc/MysqL/conf.d/my.cnf
  36. - MysqL:/var/lib/MysqL
  37. MysqL_second:
  38. image: MysqL:5.7
  39. restart: always
  40. environment:
  41. ports:
  42. - 3308:3306
  43. MysqL_ROOT_PASSWORD: $sql_PASSWORD

猜你在找的Docker相关文章