리셋 되지 말자

[docker-compose] Spring boot + Nginx + MySQL 본문

Docker

[docker-compose] Spring boot + Nginx + MySQL

kyeongjun-dev 2021. 3. 17. 13:42

프로젝트 github 주소

(github.com/joont92/docker-study/tree/master/step02)

 

joont92/docker-study

To study docker, kubernetes. Contribute to joont92/docker-study development by creating an account on GitHub.

github.com

이분의 step02를 docker-compose.yml 파일 빼고 똑같이 사용했다.
수정한 docker-compose.yml 파일 내용은 아래와 같다

- docker-compose.yml

version: "3"
services:
    test_web:
        image: nginx
        ports:
          - 80:80
        volumes:
          - ./nginx/conf.d:/etc/nginx/conf.d
        depends_on:
          - test_application

    test_database:
        image: mysql:5.7
        environment:
          MYSQL_DATABASE: test_db
          MYSQL_ROOT_PASSWORD: root
          MYSQL_ROOT_HOST: '%'
          #ports:
          #- "3306:3306"
        expose:
          - 3306
        volumes:
          - test_volume:/var/lib/mysql

    test_application:
        build: .
        expose:
          - 8080
        depends_on:
          - test_database

volumes:
    test_volume: {}

주석 처리한 부분(ports)과 그 밑에 추가한 expose가 다른 부분이고, 나머지는 똑같다.

 

디렉토리 구조

$ ls
Dockerfile  docker-compose.yml  nginx  test-application

이 상태에서 docker-compose up --build 명령어로 시작한다.

 

사용하기

- 컨테이너 실행 확인

위와같은 로고가 표시될 때까지 기다려야 한다. 인내심을 갖도록 하자.

 

- http://localhost/users 접속

접속시 모습

위 그림에는 현재 값을 추가한 상태라서 저렇게 보이는데, 처음 접속하면 '[]'만 표신된다. localhost/users로 get 요청을 보내면 위처럼 id, name, age가 보이게 된다.

값을 추가하려면 localhost/users에 post로 정보를 전송해야 한다.

 

- python을 활용한 post 요청 보내기

import requests, json
URL = 'http://localhost/users/'

# get 요청 정송
response = requests.get(URL)
print(response.status_code)
print(response.text)

# json 데이터 전송을 위한 헤더 정의
headers = {'Content-Type': 'application/json; charset=utf-8'}

# 보낼 데이터 정의
data = {'name' : 'aaa', 'age' : '30'}

# post 요청 전송
res = requests.post(URL, headers=headers, data=json.dumps(data))
print(res.status_code)

결과

200
[{"id":1,"name":"null","age":27},{"id":2,"name":"???","age":25}]
201

get 요청으로 받은 현재 목록은 위와 같고, post 요청의 결과를 확인하면 201 코드가 반환된다.

 

- localhost/users/ 접속해서 post 요청 결과 확인

post 요청 후 재접속 화면

post 요청에 사용한 data인 {'name' : 'aaa', 'age' : '30'} 가 id의 값이 3인 상태로 추가된 모습이다. 성공이다.

 

서비스 종료시에는 docker-compose.yml 디렉토리를 다른 프롬프트창으로 열고
docker-compose down -v
끝!
Comments