Оба контейнера должны быть в одной сети Docker для связи друг с другом. Контейнер app-kotin
находится в сети front
, но контейнер app-redis
не имеет блока networks:
и переходит в автоматически созданную сеть default
.
Самое простое исправление из того, что у вас есть, вы также можете поместить контейнер app-redis
в ту же сеть:
app-redis:
image: redis:5.0.9-alpine
networks:
- front
Имя службы Compose app-redis
будет затем использоваться в качестве имени хоста из других контейнеров в той же сети. сеть.
Вы можете значительно упростить эту настройку. Как правило, вам не нужно вручную указывать IP-конфигурацию для Docker -приватных сетей. Compose может создать сеть для вас, и фактически она создаст для вас сеть с именем default
. ( Networking in Compose обсуждает это далее.) links:
и expose:
не используются в современных Docker сетях; Compose может предоставить для вас значение по умолчанию container_name:
; и вам не нужно повторять working_dir:
или command:
с изображения. Удаление всего этого оставит вас с:
version: '3'
services:
app-kotin:
build: ./app
restart: always
ports:
- '3001:3001'
app-redis:
image: redis:5.0.9-alpine
Контейнер сервера сможет использовать имя службы Compose другого контейнера app-redis
в качестве имени хоста, даже с этой минимальной конфигурацией.