Dockerfileの中の記述が気になります。
ADD config/elasticsearch.yml /usr/share/elasticsearch-7-4/config/
RUN chown elasticsearch:elasticsearch config/elasticsearch.yml
Dockerコンテナ内に設定ファイルをホストからコピーして、所有者を変更する部分だと思いますが、
正しくは、/usr/share/elasticsearch/configにコピーすべきではないでしょうか?
また、cluster-nameやhttp.portの指定であれば、コンテナの環境変数に指定することでも設定ができます。
docker-composeであれば、このような感じになります。
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0
container_name: elasticsearch
environment:
- cluster.name=docker-cluster
- discovery.type=single-node
- bootstrap.memory_lock=true
- http.port=9999
(以下略)
ご参考になれば幸いです。