[Just Site] 6. MYSQL과 서버 연결하기 (feat. Network)
2022. 2. 9. 13:47ㆍ프로젝트/Just Site
728x90
않이 임시저장 했는데 글이 날라가버렸다
너무한거 아냐?
Networking란
Networking이란 여러 컨테이너가 서로 통신할 수 있도록 하는 것이다.
두가지를 주의해서 보자.
--network: 네트워크의 이름. 같은 네트워크를 가져야 통신이 가능하다.
--network-alias: 네트워크에서 쓰는 이름. 이 이름으로 호출할 수 있다.
프로젝트 구성
우선 서버를 구동할 때 DB에 대한 정보를 전달한다.
docker run -dp 3001:3001 -v cd:/app --network just-site -e MYSQL_HOST=mysql -e MYSQL_USER=root -e MYSQL_PASSWORD=secret -e MYSQL_DB=todos songinho/just_site_backend
just-site라는 네트워크를 만들고, MYSQL 설정 정보들을 전달했다.
이제 MYSQL을 구동해보자.
docker run -d --network just-site --network-alias mysql -v todo-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=todos mysql:5.7
마찬가지로 just-site라는 네트워크에 연결하고, mysql이라는 alias를 주었다.
코드 추가
Frontend에 추가하기
import React, { useEffect, useState } from 'react';
import logo from './logo.svg';
import './App.css';
import axios from 'axios';
function App() {
const [greetings, setGreetings] = useState<string>("");
let test = 'b';
useEffect(() => {
axios.get("http://localhost:3001/items")
.then(function (response) {
setGreetings(JSON.stringify(response.data));
});
}, []);
const onNewItem = () => {
axios.post("http://localhost:3001/items", { name: test })
.then((response) => {
test = test + 'b';
});
}
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
{greetings}
</p>
<button onClick={onNewItem}>
Add
</button>
</header>
</div>
);
}
export default App;
Backend에 추가
app.use(cors({
origin: 'http://localhost:3000', // 허락하고자 하는 요청 주소
credentials: true, // true로 하면 설정한 내용을 response 헤더에 추가 해줍니다.
}));
app.use(bodyParser.json());
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/greetings', (req, res) => {
res.send(`Hi, I'm goldenfish diary.`);
});
app.get('/items', getItems);
app.post('/items', addItem);
db.init().then(() => {
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
}).catch((err) => {
console.error(err);
process.exit(1);
});
총평
생각보다 단순한 구조였다.
그냥 Volume 생성하고 Network를 연결하는걸로 끝났다.
'프로젝트 > Just Site' 카테고리의 다른 글
[Just Site] 8. socket.io 공부 (2) - 튜토리얼 숙제 풀이 (0) | 2022.02.12 |
---|---|
[Just Site] 7. socket.io 공부 (1) - 튜토리얼 따라하기 (0) | 2022.02.12 |
[Just Site] 5. React에서 node.js로 요청보내기 (0) | 2022.02.06 |
[Just Site] 4. React 프로젝트 생성 (Feat. Docker) (0) | 2022.02.06 |
[Just Site] 3. node.js 서버 만들기 (feat. Docker) (0) | 2022.02.06 |