Extends the above docker-compose.yml
so that it runs backend + Ollama + frontend in one go. Assumption frontend is a simple Node.js/React app (like a Vite or CRA build).
✅ docker-compose.yml (with frontend)
version: "3.9"
services:
backend:
build: .
container_name: company-recommender-backend
ports:
- "8000:8000"
environment:
- OLLAMA_URL=http://ollama:11434
depends_on:
- ollama
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
frontend:
build: ./frontend # assumes you have a frontend/ directory
container_name: company-recommender-frontend
ports:
- "3000:3000"
environment:
- REACT_APP_API_URL=http://backend:8000 # frontend talks to backend inside Docker
depends_on:
- backend
volumes:
ollama_data:
✅ Frontend Dockerfile (in frontend/Dockerfile
)
If your frontend is React (Vite or CRA):
# Use Node.js for building the frontend
FROM node:18-slim
WORKDIR /app
# Install dependencies first
COPY package.json package-lock.json ./
RUN npm install
# Copy all frontend files
COPY . .
# Start dev server (hot reload) or build for production
# For dev mode:
CMD ["npm", "start"]
# For production (static build with Nginx), replace above CMD with:
# RUN npm run build
# FROM nginx:alpine
# COPY --from=0 /app/dist /usr/share/nginx/html
# EXPOSE 80
# CMD ["nginx", "-g", "daemon off;"]
👉 If you want production-ready deployment, I’d recommend the Nginx option (the commented block above), because it’s lighter and faster than running a Node dev server.
✅ Usage
From project root (where docker-compose.yml
is):
docker-compose up --build
-
Backend →
http://localhost:8000
-
Frontend →
http://localhost:3000
(and it calls backend via Docker network usinghttp://backend:8000
) -
Ollama →
http://localhost:11434
No comments:
Post a Comment