본문 바로가기
CICD

AWS, Docker를 이용한 간단한 웹사이트(1)-docker 작업

by 장중앙 2021. 9. 8.

 

자기소개 페이지

제약사항 

  1. Docker Container로 DB와 프론트 페이지를 실행 (DBMS 및 Web Server의 종류는 무관)
  2. EC2 인스턴스(프리티어 범주내)를 하나 생성해서 해당 인스턴스에서 1번의 도커 컨테이너를 실행
  3. 프론트 페이지에서 필요로 하는 데이터는 Lambda, API Gateway를 이용해서 제공할 수 있도록 구현

Docker 설치

https://www.docker.com/get-started

 

Get Started with Docker | Docker

Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives.

www.docker.com

원활한 환경을 위해서는 제어판 -> 프로그램 켜기/끄기 -> HyperV 체크

kernel에러가 발생하면 링크로 접속하여 설치 후 재부팅

 

Spring project 작성

build.gradle

application.yml

 

작업 디렉토리의root에 Dockerfile, docker-compose.yml작성

# Dockerfile
FROM lpicanco/java11-alpine
VOLUME /tmp
ARG JAR_FILE=./build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

 

# docker-compose.yml

version : "3"
services:
  database:
    image: mysql
    security_opt:
      - seccomp:unconfined
    container_name: mydb
    environment:
      - MYSQL_DATABASE=portfolio
      - MYSQL_ROOT_HOST=%
      - MYSQL_ROOT_PASSWORD=1234
    command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
    ports:
      - 3306:3306
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - web-network

  application:
    build: .
    restart: always
    ports:
      - 8080:8080
    volumes:
      - db_data:/var/lib/spring
    depends_on:
      - database
    container_name: web
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mydb:3306/portfolio?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&&allowPublicKeyRetrieval=true
      SPRING_DATABASE_USERNAME: root
      SPRING_DATABASE_PASSWORD: 1234
    networks:
      - web-network

networks:
  web-network:
volumes:
  db_data:

빌드 후 dockecompose 실행

생성된 컨테이너 확인

 

mydb(Mysql container) 데이터 작업

docker-compose로 저장된 portfolio DB학인

데이터 저장 후 flush privileges;

container 실행 후 확인

 

image push

생성한 이미지를 dockerhub에 push

docker hub에 repository 생성, cmd에서 docker login후에 작업

# 도커 이미지에 태그작업
# docker tag <이미지 명> <사용자명>/<repo명>:<태그>
 > docker tag mysql jjr951122/mysql:1.0.1
 > docker tag web_application jjr951122/web_application:1.0.1

# > docker push <사용자 아이디>/<이미지명>:<태그>
 > docker push jjr951122/web-application:1.0.1
 > docker push jjr951122/mysql:1.0.1

push된 이미지 확인

댓글