Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot 
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS
12. Docker(v)
13. React JS [Front-end]
14. App - Android
15. 최종프로젝트 (1M)

Docker

Docker hub저장소

도커허브 명령문

docker login

docker tag <name명:태그명> <변경할이름:태그명>
docker tag myweb:v3 hs/myweb:v3
docker push 이미지명:태그명
docker push hs/myweb:v3
docker pull 이미지명:태그명
docker pull hs/myweb:v3

docker run --name webserver3 -d -p 8383:8484 --net web-network -v webserver-upload:/upload hs/myweb:v3

도커 Registry 서비스

  1. 로컬에서 동작되는 Registry에 도커 이미지 올리기
  2. 서버에서는 Registry를 컨테이너로 동작
  3. <localhost:5000/이미지:태그> 형태로 push
  4. 외부에서 사용하려면 <아이피주소:5000/이미지:태그> 형태로 push,pull
docker pull registry
docker run -d -p 5000:5000 --restart always --name registry registry:2
docker ps

docker tag myweb:v1 localhost:5000/myweb:v1

docker push localhost:5000/myweb:v1

docker rmi localhost:5000/myweb:v1 docker pull localhost:5000/myweb:v1

docker exec -it registry /bin/sh

Docker Compose

docker compose version

도커컴포즈 파일 명령어

최상위(top)속성 정의

# 주석. 들여쓰기 (탭x, 스페이스바)

# version: "3.9" # 컴포즈 2.0 이상부터 생략가능

name: my-compose

services:
  server1:    # 서비스명(컨테이너 이름)
    #build:    # 사용할 도커파일 이미지 경로
    #  C:\Users\Windows\Desktop\Docker
    image : hs2716/myweb:v3
    ports:
      - "8585:8282" # 클라이언트에서 8585요청이 들어오면 8282 서비스로 연결
    #volumes: # 호스트디렉토리 직접 마운트 할경우
    #  - ./host_dir:/home/ubuntu/upload
    volumes: # 볼륨설정 (볼륨명 : 컨테이너폴더) , 새로운 볼륨과 함꼐 마운트
      - test-volume:/home/ubuntu/upload
    networks:
      - test-network
    depends_on : # 이 서비스가 먼저 동작된 후에 server1이 실행됨
      - compose-mysql

  compose-mysql:
    image: "mysql:8.0.41"
    ports:
      - "3308:3306"
    networks:
      - test-network
    environment: # mysql이미지의 필요한 환경변수 전달달
      MYSQL_ROOT_PASSWORD: "1234"
      


volumes : # 볼륨명
  test-volume: 

networks: # 네트워크
  test-network:

server1, compose-mysql : 컨테이너 이름

  • build : 빌드할 도커파일의 위치
  • image : 도커 허브 또는 로컬에 있는 이미지 사용용
  • ports : 포트포워딩 ex) 0000:1111 -> 0000으로 접속시 1111로 포트포워딩
  • volumes : 볼륨설정
  • 볼륨명:컨테이너폴더위치
  • ex) test-volume:/upload
  • test-volume : 볼륨명
  • /upload : 해당 볼륨을 컨테이너 내부의 이 경로로 연결(마운트)
  • networks : 사용할 네트워크를 지정
  • depends_on : 서비스의 실행순서를 지정해주는 곳으로 이 곳에 선언된 서비스가 먼저 실행된 후 해당 서비스가 실행됨
  • 위의 코드에서는 compose-mysql서비스가 실행된 후 server1이 실행
  • environment : 해당 이미지가 필요로 하는 환경변수 전달

MSA(MicroService Architecture)

마이크로서비스

Rest API 중심 아키텍쳐

  • 웹의 기존 기술(HTTP,URI 등)을 잘 활용해 자원을 정의하고 자원에 대한 행위를 명확히 구분하는 아키텍쳐 스타일
  • REST원칙을 따르면서 설계된 API로, 클라이언트가 HTTP 메서드를 이용해 서버의 자원에 접근하도록 설계된 API

이벤트 중심 아키텍쳐

Redis

docker run -d --name redis -p 6379:6379 redis

docker run -d --name redisinsight -p 5540:5540 redis/redisinsight:latest

RabbitMQ

+이벤트 중심 아키텍쳐에서 가장 많이 사용되는 비동기 메시지 큐 시스템

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management