Skapa och dockerisera en enkel React-baserad miniräknare (frontend) som kommunicerar med backend via API.
frontend/Använd create-react-app (eller Vite om du föredrar det):
cd frontend
npx create-react-app . --template cra-template
Om
npxinte fungerar i WSL: installera Node.js medsudo apt install nodejs npm.
Redigera App.js:
import { useState } from 'react';
function App() {
const [a, setA] = useState('');
const [b, setB] = useState('');
const [result, setResult] = useState(null);
const calculate = async (op) => {
const response = await fetch(`http://localhost:5000/calc/${op}?a=${a}&b=${b}`);
const data = await response.json();
setResult(data.result);
};
return (
<div>
<h1>Miniräknare</h1>
<input value={a} onChange={e => setA(e.target.value)} />
<input value={b} onChange={e => setB(e.target.value)} />
<div>
<button onClick={() => calculate('add')}>+</button>
<button onClick={() => calculate('sub')}>-</button>
<button onClick={() => calculate('mul')}>×</button>
<button onClick={() => calculate('div')}>÷</button>
</div>
<h2>Resultat: {result}</h2>
</div>
);
}
export default App;
Dockerfile för frontend# frontend/Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Testa lokalt:
docker build -t calc-frontend .
docker run -p 3000:3000 calc-frontend
Öppna
http://localhost:3000i webbläsaren
docker-compose.ymlI projektroten calc-project/docker-compose.yml:
version: '3'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
restart: always
docker-compose up --buildhttp://localhost:3000git add .
git commit -m "Lägg till frontend med React och Docker"
git push
I nästa modul bygger vi backend med Node/Express som räknar och levererar resultat till frontend via ett REST API.