MySQLContainerConfig constructor

MySQLContainerConfig({
  1. String dbUser = 'myuser',
  2. String dbPassword = 'mypass',
  3. String dbName = 'mydb',
  4. int? hostPort,
  5. bool forceNativePasswordAuthentication = false,
  6. List<String>? daemonArguments,
})

Implementation

MySQLContainerConfig({
  this.dbUser = 'myuser',
  this.dbPassword = 'mypass',
  this.dbName = 'mydb',
  int? hostPort,
  bool forceNativePasswordAuthentication = false,
  List<String>? daemonArguments,
}) : super(
        'mysql',
        version: 'latest',
        hostPorts: hostPort != null ? [hostPort] : null,
        containerPorts: [3306],
        imageArgs: _buildImageArgs(
            forceNativePasswordAuthentication, daemonArguments),
        environment: {
          'MYSQL_USER': dbUser,
          'MYSQL_PASSWORD': dbPassword,
          'MYSQL_ROOT_PASSWORD': dbPassword,
          'MYSQL_DATABASE': dbName,
        },
        outputAsLines: true,
        stdoutReadyFunction: (output, line) => false,
        stderrReadyFunction: (output, data) {
          var lines = data is List ? data : [data];
          return lines.any((l) =>
              l.contains('mysqld: ready for connections') &&
              !l.contains('port: 0'));
        },
      ) {
  if (dbUser.trim().isEmpty) {
    throw ArgumentError('Invalid dbUser: $dbUser');
  }

  if (dbName.trim().isEmpty) {
    throw ArgumentError('Invalid dbName: $dbName');
  }

  if (dbPassword.isEmpty) {
    throw ArgumentError('Invalid dbPassword: $dbPassword');
  }
}