Я новичок в docker и имею простое приложение DW (dropwizard), которое подключается кasticsearch, которое уже работает в docker с использованием docker -compose.yml, который имеет следующее содержимое.
Docker -compose.yml дляasticsearch
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
container_name: elasticsearch
environment:
- xpack.security.enabled=false
- discovery.type=single-node
ports:
- 8200:9200
- 8300:9300
volumes:
elasticsearch-data:
driver: local
Примечание: я выставляю 8200 и 8300 как порт ES на моем хосте (локальная ма c system)
Теперь все работает нормально, когда я просто запускаю свое приложение DW, которое подключается к ES в 8200 на локальном хосте, , но сейчас я пытаюсь докеризировать свое приложение DW и сталкиваюсь с несколькими проблемами.
Ниже приведен мой Dockerfile для приложения DW
COPY target/my.jar my.jar
COPY config.yml config.yml
ENTRYPOINT ["java" , "-jar" , "my.jar", "server", "config.yml"]
Когда я запускаю мое изображение выше DW docker, оно немедленно останавливается, используя docker logs <my-container-id>
, ниже выдается исключение:
*java.io.IOException: elasticsearch: Name does not resolve*
org.elasticsearch.client.IndicesClient.exists(IndicesClient.java:827)
**Caused by: java.net.UnknownHostException: elasticsearch: Name does not resolve**
Вещи, которые я пробовал
- В сообщении об ошибке четко упоминается, что мой экземпляр приложения DW docker не может подключиться кasticsearch, который я проверил работает нормально.
Также проверил Работа Elaticsearch docker и сетевой псевдоним elasticsearch
, как показано ниже, и n / w docker-files_default
.
"Aliases": ["asticsearch "," de78c684ae60 "],
Проверено ч / б моего экземпляра приложения DW docker, он использует bridge
сеть и не имеет сетевого псевдонима.
Теперь, как я могу сделать так, чтобы и мое приложение docker, иasticsearch docker использовали одну и ту же сеть, чтобы они могли соединяться друг с другом, думаю, это решило бы проблему?