Я все еще нахожусь в мире docker. Я пытаюсь докернизировать мой маленький любимый проект. Фронтенд - это приложение vue -cli, которое взаимодействует с бэкэндом, содержащим успокоительные API, созданные весенней загрузкой.
Таким образом, мой подход состоял в том, чтобы объявить два отдельных файла dockerfile для backend и frontend и объединить их через один docker compose файл. Таким образом, структура папок -
backend/
- Dockerfile
frontend/
- Dockerfile
docker-compose.yml
Поскольку внешний интерфейс должен иметь возможность вызывать внутренние службы, я создал мостовую сеть и разделил сеть между ними. Это мой docker составной файл -
version: "2"
services:
backend:
build: backend/.
networks:
- movie-network
ports:
- "8098:8098"
frontend:
build: frontend/.
ports:
- "8812:8080"
networks:
- movie-network
networks:
movie-network:
driver: bridge
У меня есть конечная точка на бэкэнде под названием /api/findAll
. Теперь, если служба внешнего интерфейса вызывает API через http://localhost:8098:/api/findAll
(хост-сеть), я могу просмотреть его из своего браузера (http://localhost: 8812 ), все работает нормально.
Но если интерфейс вызывает тот же API, используя backend:8098/api/findAll
; использование мостовой сети - в моем браузере выдается ошибка -
Если я сделаю docker exec
во внешнем интерфейсе и ping-бэкенде, пинг пройдет успешно
Итак, почему он выдает ошибку в моем браузере (http://localhost: 8812 )? Я концептуально делаю что-то не так? Поиск предложений.
Фронтенд Dockerfile -
FROM node:lts-alpine
# install simple http server for serving static content
RUN npm install -g http-server
# make the 'app' folder the current working directory
WORKDIR /app
# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./
# install project dependencies
RUN npm install
# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .
# build app for production with minification
RUN npm run build
EXPOSE 8080
Бэкэнд Dockerfile -
FROM openjdk:11-jre-slim
# Creating app directory
WORKDIR /usr/src/movies
# Copying Jar (didn't use FROM maven to save some time)
COPY target/movies*.jar movies.jar
RUN pwd
RUN ls -la
# Exposing Port
EXPOSE 8098
# Running App
ENTRYPOINT ["java","-jar","/usr/src/movies/movies.jar"]