У меня проблема с моими док-контейнерами, где один из них является сервером REST API, а другой - просто тестовым контейнером для скручивания предыдущего.
Я создал настраиваемую сеть докеров с определенным диапазоном IP-адресов, и к нему подключены оба контейнера.
В Dockerfile (образ сервера REST API) я выставил порт 8090 и также сопоставил его с портом хоста 8090 с флагом -p
при запуске контейнера. Я проверил в контейнере REST, был ли порт открыт netstat -a
, но это не так. Я не уверен, в чем проблема, потому что я не вижу, что я делаю неправильно!
Dockerfile для REST API Server
FROM openjdk:8-alpine
WORKDIR /
EXPOSE 8090
COPY target/blockchain-0.0.1-SNAPSHOT.jar blockchain.jar
CMD java -jar blockchain.jar
Создание контейнера REST
docker container run --rm -p 8090:8090 --ip 172.18.0.3 --net multichain-network --name multichain-app bc59
Тестовый контейнер для запуска Curl и Response
docker container run --rm -it --net multichain-network --ip 172.18.0.4 byrnedo/alpine-curl http://172.18.0.3:8090/api/blockchain/address/create
curl: (7) Failed to connect to 172.18.0.3 port 8090: Connection refused
Netstat -a Response
$ docker exec multichain-app netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:http-alt 0.0.0.0:* LISTEN
tcp 0 0 localhost:41183 0.0.0.0:* LISTEN
udp 34560 0 localhost:34462 0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM CONNECTED 456199
Я не понимаю, почему порт 8090 не отображается в команде netstat
, как я определил в Dockerfile, а также указывает флаг -p. Может кто-нибудь пролить свет на это для меня?