#docker #kubernetes #container #orchestrator #microservice #infrastructure-as-code #devops #ci #cd

제목프로젝트42019-12-12 21:48
작성자

1. docker-compose.yml 파일을 다음과 같이 작성합니다.


version: '3'

services:

  db_server:

    image: happiness0110/db_server:9.9

    environment:

      - MYSQL_DATABASE=osp

      - MYSQL_PASSWORD=test

    ports:

      - 3306:3306

    deploy:

      replicas: 1

      placement:

        constraints: [node.role != manager]

  render_server:

    image: happiness0110/render_server:9.9

    entrypoint: /osp/render_server/wait-for-it.sh db_server:3306 -t 500 -- bash -c "cd /osp/render_server&&npm run render_server"

    ports:

      - 5000:5000

    deploy:

      replicas: 2

      placement:

        constraints: [node.role != manager]

  user_server:

    image: happiness0110/user_server:9.9

    entrypoint: /osp/user_server/wait-for-it.sh db_server:3306 -t 500 -- bash -c "cd /osp/user_server&&npm run user_server"

    ports:

      - 8080:8080

    deploy:

      replicas: 1

      placement:

        constraints: [node.role != manager]


2. 아마 정상적으로 작동하지 않을거에요.
다운받은 user_server 이미지를 사용해서 컨테이너를 실행시킨 후, 내부의 .env 파일에 네이버 api를 사용하는데 필요한 키를 설정하고 이미지로 commit해서 써야합니다.
다운받은 render_server 이미지를 사용해서 컨테이너를 실행시킨 후, 내부의 .env 파일에 카카오 api를 사용하는데 필요한 키를 설정하고 이미지로 commit해서 써야합니다.
제가 사용했던 그대로 올리면 보안에 문제가 있어서 키를 전부 test로 바꾸어 놓았습니다.

3. localhost:5000으로 접속해야 하니까, default 도커 머신의 네트워크 설정에서 http 프로토콜 포트 5000:5000으로 매핑하세요.

4. 이제 docker-compose up을 실행한 후, localhost:5000으로 접속해보세요. 아마 웹의 메인 화면이 보일거에요.

5. 안타깝게도 회원가입이 작동하지 않아요. 문제를 해결하지 못했어요.

6. 도커 스웜을 사용하면 더 큰 문제가 있어요. docker service ls를 사용해서 확인해보면 서비스는 모두 작동하지만, localhost:5000으로 접속은 불가능하네요.

7. 위의 문제를 해결하는 방법이 있습니다.
위의 구조는 vue서버와 express서버로 서버가 분리되어 있는데
제가 실험해 본 결과 서버를 분리하지 않고 express서버에서 직접 ejs등을 사용해서 렌더링하면 접속이 잘 됩니다.
다만 서버를 vue와 express로 분리하면 문제가 발생합니다.

8. 누군가 이 문제를 해결하게 된다면 댓글 부탁드립니다ㅠ 만약 제가 이 문제를 방학때 해결한다면 글을 업데이트 하겠습니다!
#vue
댓글
이전Project42019-12-12
다음Q&A _12019-12-12