As per the docs the following should override the image defined health check. But it fails to override the image defined health check. This is important where the image defined health check is not applicable. One such example is using the creating a MySQL cluster in that the default health check is against mysqld which is not appropriate because either ndbd or ndb_mgmd is appropriate.

This leaves the container marked as unhealthy.

Using;

healthcheck:
  test: ["NONE"]

If you use the above to launch MySQL the default health check is used, inspect output following.

            "Healthcheck": {
                "Test": [
                    "CMD-SHELL",
                    "/healthcheck.sh"
                ]
            },

Resulting in;

21b30279e77d        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh mysq…"   3 minutes ago       Up 2 minutes (healthy)     1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql
0fb50981bba5        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndbd"    3 minutes ago       Up 3 minutes (unhealthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-ndbd-2
8746135e3f8e        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndbd"    3 minutes ago       Up 3 minutes (unhealthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-ndbd-1
420fb8249df8        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndb_…"   3 minutes ago       Up 3 minutes (healthy)     1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-mgmd

The work around is to call a stub shell which simply calls exit 0.

    healthcheck:
      test: ["CMD-SHELL", "{{ mysql_config_directory }}/healthcheck.sh"]

Resulting in;

            "Healthcheck": {
                "Test": [
                    "CMD-SHELL",
                    "/etc/cell/dev/mysql/healthcheck.sh"
                ]
            },
 And;

aaf28f87abf0        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh mysq…"   3 minutes ago       Up 3 minutes (healthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql
2df7948c37fc        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndbd"    3 minutes ago       Up 3 minutes (healthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-ndbd-2
1a3cd97cfc80        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndbd"    3 minutes ago       Up 3 minutes (healthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-ndbd-1
5fea532ef20f        mysql/mysql-cluster:8.0.18                          "/entrypoint.sh ndb_…"   3 minutes ago       Up 3 minutes (healthy)   1186/tcp, 2202/tcp, 3306/tcp, 33060/tcp                                  dev-mysql-mgmd

'Please note that docker_container handles networks slightly different than docker CLI. '
            'If you specify networks, the default network will still be attached as the first network. '
            '(You can specify purge_networks to remove all networks not explicitly listed.) '
            'This behavior will change in Ansible 2.12. You can change the behavior now by setting '
            'the new `networks_cli_compatible` option to `yes`, and remove this warning by setting '
            'it to `no`',
            version='2.12'
        )
    if client.module.params['networks_cli_compatible'] is True and client.module.params['networks'] and client.module.params['network_mode'] is None:
        client.module.deprecate(
            'Please note that the default value for `network_mode` will change from not specified '
            '(which is equal to `default`) to the name of the first network in `networks` if '
            '`networks` has at least one entry and `networks_cli_compatible` is `true`. You can '
            'change the behavior now by explicitly setting `network_mode` to the name of the first '
            'network in `networks`, and remove this warning by setting `network_mode` to `default`. '
            'Please make sure that the value you set to `network_mode` equals the inspection result '
            'for existing containers, otherwise the module will recreate them. You can find out the '
            'correct value by running "docker inspect --format \'{{.HostConfig.NetworkMode}}\' <container_name>"',
            version='2.14'
        )
    try:
        cm = ContainerManager(client)
        client.module.exit_json(**sanitize_result(cm.results))
    except DockerException as e:
        client.fail('An unexpected docker error occurred: {0}'.format(e), exception=traceback.format_exc())
    except RequestException as e:
        client.fail('An unexpected requests error occurred when docker-py tried to talk to the docker daemon: {0}'.format(e), exception=traceback.format_exc())
if __name__ == '__main__':
    main()