본문 바로가기
CICD

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

by 장중앙 2021. 9. 9.

https://jangcenter.tistory.com/30에서 이어짐

 

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

자기소개 페이지 제약사항 Docker Container로 DB와 프론트 페이지를 실행 (DBMS 및 Web Server의 종류는 무관) EC2 인스턴스(프리티어 범주내)를 하나 생성해서 해당 인스턴스에서 1번의 도커 컨테이너를

jangcenter.tistory.com

인스턴스 생성

프리티어 생성(Amazon Linux -> t2.micro)

기본 VPC 생성

생성한 기본 VPC 할당

보안그룹에 SSH, HTTP 추가

이후 기본 설정

인스턴스 접속

docker 설치

[ec2-user@~~~~~]$ sudo yum -u upgrade
[ec2-user@~~~~~]$ sudo yum -y install docker

설치된 docker확인

 

docker 시작하기

[ec2-user@~~~~~]$ sudo service docker start
[ec2-user@~~~~~]$ sudo usermod -aG docker ec2-user #그룹에 사용자추가
[ec2-user@~~~~~]$ newgrp docker #로그아웃후 로그인하거나 해당 명령어를 적용해야함
[ec2-user@~~~~~]$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.0\
-rc2/docker-compose-`uname -s`-`uname -m` -o \
/usr/local/bin/docker-compose #docker-compose 설치
[ec2-user@~~~~~]$ sudo chmod +x /usr/local/bin/docker-compose #실행권한 추가하기

설치된 docker-compose확인

docker-machine설치

[ec2-user@~~~~~]$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine

설치된 docker-machine 확인

[ec2-user@~~~~~]$ docker login #로그인경 권한 정상적용 확인

# [ec2-user@~~~~~]$ docker pull <이미지명>:<태그>
[ec2-user@~~~~~]$ docker pull jjr951122/web_application:1.0.1
[ec2-user@~~~~~]$ docker pull jjr951122/mysql:1.0.1

생성된 이미지 확인

docker run

[ec2-user@~~~]$ docker network create web-network #컨테이너간 연결을 위한  네트워크 생성
[ec2-user@~~~~~]$ docker run -d --name mydb -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=portfolio -p 3306:3306 --network web-network -v db_data:/var/lib/mysql mysql:5.6
[ec2-user@~~~~~]$ docker run -it --name web --network web-network -p 8080:8080 jjr951122/web_application:1.0.1

mysql 접속

[ec2-user@~~~~~]$ docker exec -it <container-ID> bash
root@~~~:/# mysql -u root -p

DB저장

mysql> create database portfolio DEFAULT CHARACTER SET UTF COLLATE utf8_unicode_ci;

data insert->flush privileges;

 

도커 컨테이너 실행 확인

인스턴스의 public address로 접근

웹서비스 정상동작

 

진행중 문제 발생 및 해결

  • Docker-compos로 컨테이너 생성시 정상 동작하지만 생성된 이미지로 실행 시 DB연결이 안됨
    • Dockerfile DB 접속에 대한 설정을 안함 - 원인 미상
    • mysql:8.0의 경우 직접 연결에 대한 보안 옵션 필수 -> mysql:5.6으로 버전을 낮춤
  •  EC2환경에서 mysql와 web 컨테이너를 연결 시 문제발생
    • 처음 mysql 마운트한 볼륨에 mysql:8.0의 정보가 남아 있어 접속이 막혔었음



댓글