Мы используем docker-compose для настройки служб для нашего приложения:
version: "3"
services:
db:
container_name: db
image: postgres:11.1
environment:
POSTGRES_USER: xxx
POSTGRES_PASSWORD: xxx
POSTGRES_DB: xxx
PGPASSWORD: xxx
volumes:
- pgdata:/var/lib/postgresql/data
- ./data/dbdump:/dbdump
networks:
- zenet
ports:
- "5432:5432"
# The React web application
web:
container_name: web
build:
context: .
dockerfile: devenv/web/Dockerfile
volumes:
- ./src/client-app:/usr/local/abc
- /usr/local/abc/node_modules
networks:
- zenet
ports:
- "3000:3000"
command: npm run startindocker
# The Django Rest Framework API
api:
container_name: api
build:
context: .
dockerfile: devenv/api/Dockerfile
environment:
DJANGO_SETTINGS_MODULE: abc.settings.dev
PYTHONSTARTUP: /root/pythonstartup.sh
PYTHONIOENCODING: UTF-8
volumes:
- .:/usr/local/borrow-a-boat
- ./devenv/api/pythonrc.py:/root/pythonstartup.sh
networks:
- zenet
depends_on:
- "db"
ports:
- "9000:9000"
command:
python3 /usr/local/borrow-a-boat/src/django/abc/manage.py runserver 0.0.0.0:9000
tty: true
volumes:
pgdata:
customboatdata:
networks:
zenet:
(конфиденциальная информация была заменена)
У моих коллег все в порядке. Я настраиваю приложение, а тома и контейнеры работают. Я могу нажать службу api
на порт 9000 штрафа из браузера и подтвердить, что БД заполнена. Однако мой сервис web
не может получить данные из API. Как я могу подтвердить, что вышеупомянутое утверждение верно и что Интернет действительно не может связаться с сервисом API.
И как я могу это исправить и заставить Интернет получать данные от API,Извиняюсь за вопрос новичка.
РЕДАКТИРОВАТЬ:
Когда я запускаю ping api
из контейнера web
, используя docker exec -it [containerID] /bin/sh
, я получаю ответ в виде:
64 bytes from 172.18.0.4: seq=139 ttl=64 time=0.084 ms
Так что, очевидно, мое утверждение неверно. Почему сервис web
не может получить ответ от сервиса api
. Когда я загружаю приложение web
в браузер, я не получаю никакого отображения журнала в терминале API-интерфейса.
EDIT-2:
Согласно вопросу @runwuf & myОтвет, ясно, что «Интернет» может общаться с сервисом «API». Итак, что-то еще не так. Вот шаги, которые мы следуем, чтобы настроить стек в наших системах. Я использую ОС Linux Mint 19.2, в то время как команда использует Mac. Команды:
- docker kill $ (docker_container_names)
- docker rm -v $ (docker_container_names)
- том докера rm abc_pgdata
- dockerimage rm abc_api
- docker image rm abc_web
- сборка docker-compose
- сборка docker-up up -d db api web
- ssh abc@abc.com'pg_dump abc |gzip '|ружье |docker-compose run --rm db psql --host db --username abc
- docker-compose run --rm db psql --host db --username abc -c "update core_photo set image_base = 'пример.jpg '"
- docker-compose run --rm db psql --host db --username abc -c" update core_experienceimage set image_base =' sample.jpg '"