docker(도커) 및 쿠버네티스

docker-compose.yml 실습(postgres 로그인정보 넘겨주기)

데이터왕 2023. 12. 29. 17:24

 

목표 : postgres 로그인 정보를, docker-compose.yml 파일에 넣어 넘겨주는 실습을 진행 

 

 

실습진행

 

  1. 깃에서 실습파일 다운
    weare@DESKTOP-BE1I4GE:~$ git clone https://github.com/learndataeng/example-voting-app.git
    Cloning into 'example-voting-app'...
    remote: Enumerating objects: 1087, done.
    remote: Total 1087 (delta 0), reused 0 (delta 0), pack-reused 1087
    Receiving objects: 100% (1087/1087), 1.14 MiB | 21.26 MiB/s, done.
    Resolving deltas: 100% (407/407), done.
  2. 해당 파일로 이동
    weare@DESKTOP-BE1I4GE:~$ cd example-voting-app
  3. 파일 안에 yml 파일 빌드
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose -f docker-compose.mac.yml build
    중략
    +만약 worker가 빌드가 안되고, 그 이유가 Buildx 미설치로 인한 에러라면 
    https://allofdater.tistory.com/37 를 참조한다.

  4. 만들어진 이미지 확인
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker images
    REPOSITORY                   TAG         IMAGE ID       CREATED             SIZE
    example-voting-app_worker    latest      79f4f5ff65ba   36 minutes ago      194MB
    example-voting-app_result    latest      21441b000470   37 minutes ago      220MB
    example-voting-app_vote      latest      68b2f101195b   37 minutes ago      145MB

  5. yml파일 빌드 수행
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose -f docker-compose.mac.yml build
    redis uses an image, skipping
    db uses an image, skipping
    Building vote
    [+] Building 7.1s (11/11) FINISHED

  6. 프로젝트에 정의된 모든 서비스의 이미지를 최신 버전으로 업데이트하고, 공식 이미지 postgres, redis를 받아옴
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose -f docker-compose.mac.yml pull

  7. 다시 이미지를 확인하면 postgres, redis 두개가 추가 돼있음
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker images
    REPOSITORY                   TAG         IMAGE ID       CREATED          SIZE
    example-voting-app_worker    latest      79f4f5ff65ba   43 minutes ago   194MB
    example-voting-app_result    latest      21441b000470   44 minutes ago   220MB
    example-voting-app_vote      latest      68b2f101195b   44 minutes ago   145MB
    postgres                     15-alpine   c94362bdb5ee   2 weeks ago      240MB
    redis                        alpine      d2d4688fcebe   3 weeks ago      41MB

  8. 빌드하고, 컨테이너만들고, 컨테이너실행 3가지를 한번에 하는 명령어 docker-compose up
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose up
    (중략)
    vote_1    | 127.0.0.1 - - [29/Dec/2023 07:23:44] "GET / HTTP/1.1" 200 -
    vote_1    | 127.0.0.1 - - [29/Dec/2023 07:23:59] "GET / HTTP/1.1" 200 -

  9. 동작 확인
    윈도우 
    http://localhost:5000/
    http://localhost:5001/
    둘다 접속(맥은 5001,5002로 들어갈것)
  10. 실행중인 컨테이너 확인
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose ps
               Name                          Command                  State                         Ports
    ------------------------------------------------------------------------------------------------------------------------
    example-voting-app_db_1       docker-entrypoint.sh postgres    Up (healthy)   5432/tcp
    example-voting-app_redis_1    docker-entrypoint.sh redis ...   Up (healthy)   6379/tcp
    example-voting-app_result_1   nodemon server.js                Up             0.0.0.0:5858->5858/tcp,:::5858->5858/tcp,
                                                                                  0.0.0.0:5001->80/tcp,:::5001->80/tcp
    example-voting-app_vote_1     python app.py                    Up (healthy)   0.0.0.0:5000->80/tcp,:::5000->80/tcp
    example-voting-app_worker_1   dotnet Worker.dll                Up

  11. 사용자를 postgres로 지정하고, example-voting-app_db_1 의 shell을 연다.
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker exec -it --user=postgres example-voting-app_db_1 sh

  12. whoami를 통해 postgres 계정에 들어와 있음을 확인
    / $ whoami
    postgres

  13.  psql 설치된것 확인
    / $ psql
    psql (15.5)
    Type "help" for help.

  14. 현재 연결된 db와 유저이름
    postgres=# \c
    You are now connected to database "postgres" as user "postgres".

  15. 현재 데이터베이스에 있는 테이블 목록을 나열
    postgres=# \dt
             List of relations
     Schema | Name  | Type  |  Owner
    --------+-------+-------+----------
     public | votes | table | postgres
    (1 row)

  16. votes 내용 확인
    postgres=# SELECT * FROM votes;
           id        | vote
    -----------------+------
     161e7795c8e92b7 | a
    (1 row)

  17. 종료
    postgres=# exit
    / $ exit


    p.s 
    +종료 후 yml 내려본다.
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker-compose -f docker-compose.mac.yml down
    Stopping example-voting-app_worker_1 ... done
    Stopping example-voting-app_vote_1   ... done
    Stopping example-voting-app_result_1 ... done
    Stopping example-voting-app_redis_1  ... done
    Stopping example-voting-app_db_1     ... done
    Removing example-voting-app_worker_1 ... done
    Removing example-voting-app_vote_1   ... done
    Removing example-voting-app_result_1 ... done
    Removing example-voting-app_redis_1  ... done
    Removing example-voting-app_db_1     ... done
    Removing network example-voting-app_default
    WARNING: Network example-voting-app_default not found.

    + 컨테이너 지워 졌는지 확인
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

    + down은 컨테이너만 지우고 이미지는 지우지 않음을 알 수있음.
    weare@DESKTOP-BE1I4GE:~/example-voting-app$ docker images
    REPOSITORY                   TAG         IMAGE ID       CREATED         SIZE
    example-voting-app_worker    latest      79f4f5ff65ba   2 hours ago     194MB
    example-voting-app_result    latest      21441b000470   2 hours ago     220MB
    example-voting-app_vote      latest      68b2f101195b   2 hours ago     145MB
    <none>                       <none>      814c986a34da   2 hours ago     220MB
    <none>                       <none>      f220bc028f32   2 hours ago     145MB
    node                         18-slim     d3cce7487840   9 days ago      196MB
    postgres                     15-alpine   c94362bdb5ee   2 weeks ago     240MB
    redis                        alpine      d2d4688fcebe   3 weeks ago     41MB
    python                       3.9-slim    4fd8d6bf114c   2 months ago    126MB
    multiarch/qemu-user-static   latest      3539aaa87393   11 months ago   305MB