2020-10-31

Posted by karais89 on October 31, 2020

인프런에서 결제한 도커 강의 학습 및 내용 정리 진행. 이전에 도커에 대해 몇개의 강의 및 책을 학습한 적은 있어 대략적인 방식만 알고 있는 상태에서, 실제 개발에 적용 가능한지 확인을 위해 학습 중.

실행이 안되서 다시 복습

https://github.com/jaewonhimnae/docker-codes

로컬 환경 테스트 트러블 슈팅

  • db 접속시 설정 mysql → localhost
  • CORS로 인해 제대로 실행되지 않음. express에 cors 모듈 다운 및 url 수정

    1
    2
    3
    4
    5
    6
    
      // express에 추가
      const cors = require('cors')();   // 통신 수락해주기 : cors
      app.use(cors);
    
      // axios 테스트시
      axios.get('/api/values') -> axios.get('http://localhost:5000/api/values')
    

참고

  • 우선 host 설정에서 localhost가 아닌 mysql로 설정해야 도커 환경에서 접속 가능한 것 같다. (docker-compose에 명시되어야 됨)
  • react.js의 package.json에 디펜던시에 “axios”: “^0.20.0” 추가
  • 도커 파일로 도커 빌드 예시

    1
    2
    3
    4
    5
    6
    
      docker build ./
      docker build ./ -f Dockerfile.dev
      docker build -t karais89/hello:latest ./
    
      # 리액트 실행 예
      docker run -p 3000:3000 <이미지이름>
    
  • mysql폴더에 initialize.sql 파일을 만든이유(볼륨설정으로 아래와 같이 세팅해줌)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      PostgreSQL, MySQL이든 Docker 실행할 때 내부 데이터베이스를 방법은 동일하다. 
      docker-compose.yml 혹은 Dockerfile 파일에 미리 해당 데이터베이스를 정의하고, 
      docker-entrypoint-initdb.d에 SQL 스크립트 파일을 추가하면 Docker 이미지 실행 시 자동으로 
      해당 SQL 스크립트를 읽어서 데이터베이스 세팅이 진행된다.
    
      # ex
      #   volumes:
      #     - ./mysql/mysql_data:/var/lib/mysql
      #     - ./mysql/sqls/:/docker-entrypoint-initdb.d/
    
  • docker-compose 빌드

    1
    
      docker-compose up --build