docker の接続に問題があります。公式の mysql 5.7 イメージとPrismaサーバーを使用しています。Prisma cli を介して起動すると、そのdocker compose
下 (ここで説明) を使用してすべてが機能します。
しかし、docker api を介してプログラムでこのコンテナーを開始する必要があり、この場合、アプリからの接続は[Note] Aborted connection 8 to db: 'unconnected' user: 'root' host: '164.20.10.2' (Got an error reading communication packets)
.
だから私は何をしますか:
ブリッジ ネットワークの作成:
const network = await docker.network.create({ Name: manifest.name + '_network', IPAM: { "Driver": "default", "Config": [ { "Subnet": "164.20.0.0/16", "IPRange": "164.20.10.0/24" } ] }});
mysql コンテナの作成とネットワークへのアタッチ
const mysql = await docker.container.create({ Image: 'mysql:5.7', Hostname: manifest.name + '-mysql', Names: ['/' + manifest.name + '-mysql'], NetworkingConfig: { EndpointsConfig: { [manifest.name + '_network']: { Aliases: [manifest.name + '-mysql'] } } }, Restart: 'always', Args: [ "mysqld", "--max-connections=1000", "--sql-mode=ALLOW_INVALID_DATES,ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE,IGNORE_SPACE,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_UNSIGNED_SUBTRACTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,ANSI,DB2,MAXDB,MSSQL,MYSQL323,MYSQL40,ORACLE,POSTGRESQL,TRADITIONAL" ], Env: [ 'MYSQL_ROOT_PASSWORD=secret' ] }); await network.connect({ Container: mysql.id }); await mysql.start();
- 次に、Mysql が起動するのを待ち、そこから必要なデータベースと必要な
Prisma
コンテナーを作成しprismagraphql/prisma:1.1
て起動します。アプリ サーバーは mysql ホストを正しく解決しますが、接続は mysql によってドロップされます。
3306 ポートのアプリ コンテナーから mysql コンテナーへの Telnet は正しく応答します。
J
5.7.21U;uH Kem']#45T]2mysql_native_password
私は何を間違っていますか?