코딩스토리/데이터베이스

PostgreSQL 도커 사용하여 설치하기

Tech&Fin 2023. 11. 22. 11:11
반응형

목차 - 클릭하면 이동합니다.

    도커 사용하기

    도커(Docker)는 요즘 거의 필수로 사용되고 있는 듯 한데요. 도커를 사용하면 여러가지 프로그램들을 간편하게 설치할 수 있고 독립된 프로세스에서 실행할 수 있습니다.

     

    이번 시간에는 도커를 사용해서 PostgreSQL을 설치해 볼 예정인데요. amd64 계열의 서버를 사용하시는 분들은 docker 사용이 가능하지만 aarch64 에서는 아쉽게도 도커를 설치할 수 없습니다.

     

    하지만 대신 Podman이라는 것을 사용할 수 있는데요. docker를 podman으로 명령어만 바꾸면 모든게 똑같습니다. 저는 aarch64 서버에서 설치를 진행해 볼 예정입니다.

    도커 계정 만들기

    [python@instance-technfin ~]$ podman --version
    podman version 4.4.1

    먼저 버전을 살펴 보겠습니다. 앞서 말씀드린 바와 같이 저는 aarch64 서버에서 진행할 예정이라 podman을 사용하겠습니다. docker를 사용하시는 분들은 docker --version 과 같이 podman만 docker로 변경해 주시면 됩니다.

    [python@instance-technfin ~]$ sudo useradd docker
    
    [python@instance-technfin ~]$ sudo passwd docker
    Changing password for user docker.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [python@instance-technfin ~]$
    [python@instance-technfin ~]$ sudo usermod -aG docker docker
    [python@instance-technfin ~]$

    docker 라는 리눅스 계정을 하나 생성하였습니다. docker 는 루트 권한으로 실행해야 하기 때문에 생성한 계정에 루트 권한을 부여 합니다.

    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    docker  ALL=(ALL)       ALL
    
    ## Same thing without a password
    # %wheel        ALL=(ALL)       NOPASSWD: ALL
    docker  ALL=(ALL)       NOPASSWD: ALL

    docker 계정이 루트 권한으로 명령어를 수행할 수 있도록 합니다. 저는 비밀번호 없이 root 권한으로 수행 가능하도록 변경하였습니다.

    [python@instance-technfin ~]$ su - docker
    Password:
    Last failed login: Sun Nov 19 14:37:32 KST 2023 from 124.223.3.54 on ssh:notty
    There were 89 failed login attempts since the last successful login.
    [docker@instance-technfin ~]$ mkdir postgres
    [docker@instance-technfin ~]$ cd postgres
    [docker@instance-technfin postgres]$ ls -rlt
    total 0
    [docker@instance-technfin postgres]$

    docker 사용자로 전환하여 postgres 라는 폴더를 만들어 줍니다.

    PostgreSQL 설치

    우리는 일반 docker가 아닌 docker-compose를 사용해서 더욱 편리하게 설치하도록 하겠습니다.

    version: '3.9'
    
    services:
      postgres:
        container_name: postgresql-docker
        image: postgres:16-alpine3.18
        ports:
          - 5432:5432
        volumes:
          - ~/apps/postgres:/home/docker/postgres/data
        environment:
          - POSTGRES_PASSWORD=password
          - POSTGRES_USER=username
          - POSTGRES_DB=dbname

    먼저 위의 내용을 담은 docker-compose.yml 파일을 만들어 줍니다.

     

    [docker@instance-technfin postgres]$ pwd
    /home/docker/postgres
    [docker@instance-technfin postgres]$
    [docker@instance-technfin postgres]$ ls -rlt
    total 4
    -rw-rw-r--. 1 docker docker 322 Nov 21 17:01 docker-compose.yml
    [docker@instance-technfin postgres]$
    [docker@instance-technfin postgres]$ sudo podman-compose up -d
    podman-compose version: 1.0.6
    ['podman', '--version', '']
    using podman version: 4.6.1
    ** excluding:  set()
    ['podman', 'ps', '--filter', 'label=io.podman.compose.project=postgres', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
    ['podman', 'network', 'exists', 'postgres_default']
    ...
    ...
    exit code: 0
    [docker@instance-technfin postgres]$

    sudo podman-compose up -d 또는 도커 환경에서는 sudo docker-compose up -d 를 사용해서 도커를 사용해 postgreSQL 데이터베이스를 설치하고 실행합니다.

     

    [docker@instance-technfin postgres]$ podman ps -a
    CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
    [docker@instance-technfin postgres]$ sudo podman ps -a
    CONTAINER ID  IMAGE                                     COMMAND     CREATED         STATUS         PORTS                   NAMES
    c45d78a54eef  docker.io/library/postgres:16-alpine3.18  postgres    12 minutes ago  Up 12 minutes  0.0.0.0:5532->5432/tcp  postgresql-docker
    [docker@instance-technfin postgres]$

    sudo podman ps -a 또는 sudo docker ps -a를 사용해서 정상적으로 컨테이너가 동작되고 있는지 확인합니다.

    DB 접속 툴(저의 경우는 DBeaver)을 사용해서 접속 잘 되는지 테스트 해 보았습니다.

     

    무료 DB 툴은 아래를 참고 부탁 드립니다.

    2022.02.06 - [코딩스토리/개발관련] - 무료 SQL DB 툴 추천 - DBeaver 디비버

     

    무료 SQL DB 툴 추천 - DBeaver 디비버

    Tech&Fin에서는 이제부터 본격적으로 데이터베이스를 활용한 비트코인 자동매매 프로그램을 만드는 과정을 포스팅하려고 하는데요. 데이터베이스 서버에 접속하여 SQL 쿼리를 실행하기 위해서는

    technfin.tistory.com

     

    설치한 DB를 외부에서 접속하려면 방화벽 개방도 필요하니 아래 글 참고 하시면 좋을 것 같습니다.

    2022.02.19 - [코딩스토리/리눅스] - 오라클 리눅스 8 - PostgreSQL 13 외부 접속하기

     

    오라클 리눅스 8 - PostgreSQL 13 외부 접속하기

    지난 포스팅에서 리눅스 서버에 PostgreSQL 13 버전을 설치하고 설정하는 방법에 대해서 살펴 보았습니다. 이어서 이번 시간에는 방화벽 설정등을 마무리 짓고 DBeaver를 통해 외부에서 DB에 접속하는

    technfin.tistory.com

    마치며

    살펴 보았듯이 도커를 사용하면 여러가지 프로그램들 설치를사 OS환경에 구애 받지 않고 자유롭고 편리하게 할 수 있습니다. 향후 생성된 DB에 데이터를 적재하는 과정을 거쳐가며 새로운 버전의 자동매매 프로그램을 개발 하는 과정을 포스팅 해 볼 예정이오니 참고 부탁 드리겠습니다.

     

    블로그를 구독하시면 소식을 조금 더 일찍 받아보실 수 있습니다.

     

    감사합니다.

    반응형