1 분 소요

1. git clone

$ git clone https://github.com/minju412/docker-test.git

2. docker-compose 설치

$ sudo apt  install docker-compose

3. docker-compose.yml 작성

version: '3'

services:
  database:
    container_name: mysql_db
    image: mysql/mysql-server:5.7
    environment:
      MYSQL_DATABASE: users_db
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: 1234
      TZ: 'Asia/Seoul'
    ports:
      - "3306:3306"
    command:
      - "mysqld"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    networks:
      - test_network

  application:
    container_name: docker-compose-test
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "9000:9000"
    environment:
      SPRING_APPLICATION_JSON: '{
              "spring.datasource.url"  : "jdbc:mysql://mysql_db:3306/users_db?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false",
              "spring.datasource.username" : "root",
              "spring.datasource.password" : "1234",
              "spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL8Dialect",
              "spring.jpa.hibernate.ddl-auto" : "create"
            }'
    depends_on:
      - database
    networks:
      - test_network

networks:
  test_network:

이 때 ip 주소 부분에 ip 주소가 아닌, service 이름으로 적어야 한다.

4. aws 보안 설정

스크린샷 2022-10-10 오후 5 03 50

5. 실행

# 빌드
docker-compose up --build

# 실행
$ sudo docker-compose up -d

# 실행 확인
$ sudo docker-compose ps -a

Trouble Shooting - 1

스크린샷 2022-10-07 오후 11 40 06
다양한 원인이 있겠지만, 내 경우에는 처음에 sudo를 붙이지 않아서 발생한 오류였다.

Trouble Shooting - 2

아래와 같이 Access denied for user 'root'@'172.18.0.3' 오류가 발생한다면,
mysql에 접속해 해당 유저를 생성한 뒤, 권한을 부여하면 된다.
(mysql에 접속하기 전에 mysql container를 실행해두어야 한다.) 스크린샷 2022-10-10 오후 4 04 31

# 도커 컨테이너 접속
$ docker exec -it mysql_db bash 

# mysql 접속
bash# mysql -u root -p; 

# mysql db 사용
mysql> use mysql; 

# user 조회
mysql> select host, user from user; 

# 계정 생성
mysql> create user root@172.18.0.3 identified by '비밀번호'; 

# 권한 부여
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.18.0.3';

# 메모리에 반영
mysql> flush privileges;

# 권한 확인
mysql> show grants for root@172.18.0.3;

스크린샷 2022-10-10 오후 4 44 04

6. 성공!

스크린샷 2022-10-10 오후 5 23 54

Ref



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: