logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

#010 #Docker Compose

#010 #Docker Compose
Docker
2024년 6월 12일
목차

👉 Docker 네트워크 개념 간단정리

notion image
공유기는 두개의 아이피를 갖는다. 
공인 아이피 : 50.20.20.20
사설 아이피:  192.168.0.1
공유기는 두개의 아이피를 갖는다. 공인 아이피 : 50.20.20.20 사설 아이피: 192.168.0.1
notion image
설명
설명
  • 3번의 컴퓨터에서 192.168.0.4 로 요청을 하면, 그 요청은 공유기 까지 갔다가 자신을 찾게 된다.
  • 3번의 컴퓨터에서 50.20.20.20:8003 같은 형식으로 포트포워딩을 한다면 해당 요청은 공유기 바깥 세상을 나가서 다시 되돌온다. → 비효율적
  • Docekr는 3번의 PC에서 설치가 되면 그 OS 내부에서 Docker만의 사설 네트워크를 갖는다.
  • Docker의 사설 네트워크는 보통 172.17.0.1 을 사용하게 된다.
notion image
Docker 세상은 OS안에 있다. 
Docekr 세상의 사설 네트워크는 172.17.0.1 세상으로 돌아간다.
Docker 세상은 OS안에 있다. Docekr 세상의 사설 네트워크는 172.17.0.1 세상으로 돌아간다.
 
notion image
172.17.0.1:8004 로 포트포워딩을 해서 LB를 찾을 수 있다.
또는 172.17.0.4:80으로도 LB를 찾을 수 있다.
172.17.0.1:8004 로 포트포워딩을 해서 LB를 찾을 수 있다. 또는 172.17.0.4:80으로도 LB를 찾을 수 있다.

👉 프록시 패스

notion image
서버는 XSS공격 때문에, 자바스크립트 요청을 허용하지 않는다.
서버는 XSS공격 때문에, 자바스크립트 요청을 허용하지 않는다.
notion image
대신 Lobby 서버로 ajax나 자바스크립트 요청을 할 수 있는데,
실제 서버에서 LB서버의 요청을 허용하는 작업을 CORS설정이다.
대신 Lobby 서버로 ajax나 자바스크립트 요청을 할 수 있는데, 실제 서버에서 LB서버의 요청을 허용하는 작업을 CORS설정이다.
 
Video preview
생활코딩 리버스 프록시 꼭 보기!!
생활코딩 리버스 프록시 꼭 보기!!
 
 

👉 ex07

notion image
폴더 구조
폴더 구조
 

🔹 mySQL 환경변수를 도커파일에 설정하기

notion image

notion image
notion image
page icon
세팅할 때 MySQL은 환경변수를 확인해서 세팅을 해준다.
notion image
MySQL이 세팅이 될 때, 무조건 ENTRYPOINT를 건들게 되는데,
여기다가 초기세팅이 필요한 쿼리를 넣어두면 만들어준다.
MySQL이 세팅이 될 때, 무조건 ENTRYPOINT를 건들게 되는데, 여기다가 초기세팅이 필요한 쿼리를 넣어두면 만들어준다.
notion image
MySQL에서 사용할 수 있는 도커환경변수는 여기에 정리 되어있다.
MySQL에서 사용할 수 있는 도커환경변수는 여기에 정리 되어있다.
 

도커파일 db 세팅

init.sql

 
notion image
db로 빌드 해보자.
db로 빌드 해보자.
notion image
docker images로 확인
docker images로 확인
notion image
docker run -dit db bash로 해당 이미지 실행
docker run -dit db bash로 해당 이미지 실행
notion image
docker exec -it ac56 bash해당 이미지 접속
docker exec -it ac56 bash해당 이미지 접속
notion image
mysql version도 확인이 가능하다.
mysql version도 확인이 가능하다.
notion image
mySQL 이렇게 접속이 가능하다.

—→ 접속 안됨 다시 지우고 다시 해보자.
mySQL 이렇게 접속이 가능하다. —→ 접속 안됨 다시 지우고 다시 해보자.
 

🔹 다 지우고 새로 빌드 해보자.

notion image
이거 넣고 다시 빌드 하자. 컨테이너 이미지 다삭제하고 다시 해보자.
이거 넣고 다시 빌드 하자. 컨테이너 이미지 다삭제하고 다시 해보자.
 
notion image
db안의 도커파일을 굽는다. 
여기서 CMD랑 ENTRYPOINT는 여기서 실행되는 것이 아니라. 
RUN할 때 실행 되는 것.
db안의 도커파일을 굽는다. 여기서 CMD랑 ENTRYPOINT는 여기서 실행되는 것이 아니라. RUN할 때 실행 되는 것.
 
notion image
이미지 실행
아마 엔트리 포인트
이미지 실행 아마 엔트리 포인트
notion image
 

🔹 mySQL로 들어가보자.

notion image
아이피는 로컬 호스트 : 127.0.0.1
포트 : 3308
아이디랑 패스워드는 도커파일에서 확인
아이피는 로컬 호스트 : 127.0.0.1 포트 : 3308 아이디랑 패스워드는 도커파일에서 확인
notion image
DB접속해보면 생성이 된 것이 확인이 가능하다.
DB접속해보면 생성이 된 것이 확인이 가능하다.
 
notion image
이미 다른 터미널이 돌고 있으니까, 
같은 ps를 bash로 접근 해보자.
이미 다른 터미널이 돌고 있으니까, 같은 ps를 bash로 접근 해보자.
 

🔹 터미널에서도 mysql로 접근이 가능하다.

notion image
bash로도 mysql 접근이 가능하다.
mysql -u root -p
여기서 enter password에서 아무반응이 없는 것 처럼 보이는데, 비밀번호 입력이 되고 있으니 정확하게 타이핑해서 넣자.

여기선 root1234
bash로도 mysql 접근이 가능하다. mysql -u root -p 여기서 enter password에서 아무반응이 없는 것 처럼 보이는데, 비밀번호 입력이 되고 있으니 정확하게 타이핑해서 넣자. 여기선 root1234
notion image
비밀번호가 맞으면 격한 환영해준다.
비밀번호가 맞으면 격한 환영해준다.
 

🔹 mysql bash 명령어 테스트

notion image
show databases;
데이터 베이스 목록을 볼 수 있다.
show databases; 데이터 베이스 목록을 볼 수 있다.
notion image
use blogdb; 
명령어로 database를 활성화한다.
use blogdb; 명령어로 database를 활성화한다.
 
notion image
show tables;
show tables;
notion image
notion image
describe 테이블을 설명해라 이뜻
describe 테이블을 설명해라 이뜻
 
 

👉서버 도커파일

notion image

🔹 Dockerfile 작성

JavaScript
FROM openjdk:11-jdk-slim

RUN apt-get update
RUN apt-get install -y git

WORKDIR /app

COPY ./entrypoint.sh ./entrypoint.sh

RUN ["chmod", "+x", "entrypoint.sh"]
ENTRYPOINT ["/bin/bash", "./entrypoint.sh"]
도커 파일 설정을 위와 같이 해준다.
도커 파일 설정을 위와 같이 해준다.
 

🔹 entrypoint 작성

JavaScript
git clone https://github.com/busanuv/blog-last.git
cd blog-last
chmod +x gradlew
./gradlew build
chmod +x build/libs/*.jar
java -jar -Dspring.profiles.active=docker build/libs/*.jar
notion image