Docker MySQL Express 연결하기
이전 도커로 express앱을 띄운 후 연결 확인 후 데이터 베이스를 도커로 실행 한 후 express와 연결하는 테스트를 진행해보도록 하자.
먼저 docker-compose.yml에 mysql이미지를 추가해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| mysql: image: mysql:5.7 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always environment: MYSQL_DATABASE: MYSQL_USER: MYSQL_PASSWORD: MYSQL_ROOT_PASSWORD: ports: - "3306:3306" volumes: - ./data:/var/lib/mysql - ./mysql.conf:/etc/mysql/conf.d
|
docker-compose up 명령 실행 후 mysql이 실행중인 것을 확인하고 docker exec -it #{name} bash 를 통해 mysql로 접근이 가능하다.
express sequelize 세팅
npm install sequelize mysql2 sequelize-cli
npx sequelize-cli init <- 시퀄라이즈 초기 설정
config 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| { "development": { "username": "test", "password": "1210ss", "database": "test", "host": "mysql", "dialect": "mysql" }, "test": { "username": "root", "password": null, "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" }, "production": { "username": "root", "password": null, "database": "database_production", "host": "127.0.0.1", "dialect": "mysql" } }
|
데이터 베이스를 환경에 맞게 연결할 수 있는 옵션이 있다. 간단하게 dev 환경 세팅만 진행 후 연결을 해보도록 한다.
1 2 3 4 5 6 7 8 9 10 11 12
|
sequelize.sync({ force: false }) .then(() => { console.log('데이터베이스 연결 성공!'); }) .catch((err) => { console.log(err); });
|
다시 docker의 express를 실행해주면 데이터 베이스 연결이 완료된다.
1 2 3 4 5 6 7 8 9 10 11
| ✘ hanjuryeon ~/docker-test main ± docker-compose up docker-test Starting docker-node-app ... done Attaching to docker-node-app docker-node-app | [nodemon] 2.0.15 docker-node-app | [nodemon] to restart at any time, enter `rs` docker-node-app | [nodemon] watching path(s): *.* docker-node-app | [nodemon] watching extensions: js,mjs,json docker-node-app | [nodemon] starting `node app.js` docker-node-app | express app start docker-node-app | Executing (default): SELECT 1+1 AS result docker-node-app | 데이터베이스 연결 성공!
|