HOXY...도커 컨테이너로 2개의 웹사이트 운영 할 때...DB 포트가...
안녕하세요.
혹시 도커 컨테이너로 2개의 웹사이트 운영 할 때...컨테이너 내부의 DB(mysql이던 마리아db이던) 포트를 각각 다르게 설정해줘야 하는게 맞겠죠? A웹호스팅의 SQL DB port가 336을 사용중이라면 B웹호스팅 SQL DB port는 3336식으로 안겹치게 하는게 맞는건지 짚어주시면 감사하겠습니다.
도크 개념이 아직도 생소하네요 ㅠㅠ
해아님 댓글 감사합니다.
현재 도커에서는 1개의 컨테이너에 워드프레스 1개 운영중이고, 추가로 컨테이너를 만들면서 워드프레스가 아닌 1개의 웹사이트를 만들고자 합니다.
좀 더 간단히 재질문 드리자면...
A 컨테이너에 DB 설치 포함
B 컨테이너에도 DB 설치 포함
하는 경우에는 A컨테이너/B컨테이너에 DB 336 포트 번호를 서로 다르게 설정하는게 맞을까요?
제말은 같은 mysql 사용하실거면 컨테이너를 중복실행하기보다는 하나의 mysql 컨테이너에 사이트를 추가하셔도 된다는거에요..
만약 추가로 설치하는 컨테이너에서도 db를 따로 생성하여 포트를 변경하실경우 서버쪽에서도 바꿔주셔야 할겁니다.
A컨테이너에 : 워드프레스+mysql(336포트) 설치
B컨테이너도 : 워드프레스+mysql(336포트) 설치
이렇게 하더라도 A / B 컨테이너는 개별 컨테이너이기 때문에 각자 컨테이너 내부 통신으로만 336포트를 사용하니 DB 포트 번호는 A / B컨테이너에서 동일하게 사용해도 문제가 없다.
-------
우선은 제가 mysql 컨테이너만 개별 설치하고 다른 컨테이너다가 이걸 붙이는 방법을 아직 몰라서...컨테이너별로 sql DB를 설치하는게 마음이 편합니다 ㅠㅠ
오...아...제가 개념을 잘못 잡았군요.
<-이게 컨테이너가 아니라
<-이게 컨테이너였군요;;;
외부로 포트를 노출시키지 않아도
나중에 호스트나 같은 네트워크에 속한 컨테이너 상에서 db1:336 처럼 접근할 수 있습니다.
호스트를 통해 포트를 노출하려면 각각의 336 포트를 각기 다른 호스트 포트에 매핑해주셔야 하고요
도커의 컨테이너는 각 개별적으로 IP를 부여받습니다.
그러나 결국 호스트와 매핑하게 된다면 포트를 중복해서 사용할 수는 없습니다.
다른 개념이지만 추가로 docker network 가 별개라면 또다른 이야기가 되구요.
compose 등으로 구성하는 경우 외부 노출이 안되는 별도 network라면 포트를 무엇을 써도 문제되지 않습니다.
동일한 웹서비스 두개를 운용시 구성의 예를 들어보겠습니다.
1. 만약 어플 (워드프레스등)과 DB가 한통이 아닌 각각 컨테이너로 별도로 동작하는데 network가 단순 브릿지나 호스트로 설정된 따로 국밥이라면..
network를 브릿지로 서로 겹치지 않도록 다른 포트로 잘 설정해줍니다.
이경우 별도로 [워프1] [워프2] [DB1] [DB2] 로 총 네개의 컨테이너가 올라갈겁니다.
이 컨테이너들은 각각 IP는 다르지만 서로 같은 호스트(IP)에서 외부포트를 열게 될테니 겹치지 않도록 포트를 구성해야합니다.
2. 각각 도커 compose 사용이 가능한 경우
밖으로 노출할 웹포트 경로(워드프레스 포트는 호스트 맵핑)만 안겹치게 설정하고 DB는
각 docker-compose.yml 끼리 네트워크 이름을 다르게 설정.
이 경우라면 서로 내부망이나 다름 없기에 2개의 어플의 설정 포트가 동일해도 문제되지 않습니다.
이런 식의 편리함 덕에 컴포즈로 많이들 사용합니다만 마찬가지로 외부로 노출한 웹 서비스 포트의 경우 한 도커 서버에서 동일할 수 밖에 없습니다.
결과적으로 [IP]:[Port]가 결국 호스트로 접근할 경로가 되기 때문입니다.
본문의 웹호스팅이란게 만약 웹서버가 아닌 정말 물리적으로 다른 IP의 서버라면 [IP] 항목이 다를테니 포트가 같아도 문제 없지만, 단순히 한 서버안에 웹어플리케이션을 뜻하시는 거라면 이녀석들은 각각 달라야 맞습니다.
cmt alert