2020. 8. 13. 23:51 ㆍ개발 이야기/오픈소스
안녕하세요 해커의 개발일기 입니다.
오늘은 지난번에 다루었던 Dockerfile을 이용해 임시 빌드 환경 구성하기
이어서 DB 셋팅하기 입니다.
제가 자주 사용하는 postgresql을 이용해서 만들어 볼텐데요.
계속해서 유지해야하는 데이터가 없는 경우에는 그냥 스키마를 구성하는 DDL만 실행을 시키셔두 되고
디폴트로 적용되어야하는 데이터가 있는 경우에는 INSERT까지 있는 DML을 실행시켜주시면 될것 같습니다.
상황에 맞게 사용하시면 됩니다 ~~!
먼저 우분투 환경에서 진행을 하고 postgresql-9.3을 설치해줍니다.
그리고 디폴트 포트인 5432 포트를 열어주는데까지 적용을 시켜줍니다.
# created by mskim
# Set the base image to Ubuntu
FROM ubuntu:14.04
################## BEGIN INSTALLATION ######################
# Postgres with Postgis
# Install wget
RUN apt-get install wget -y
# Setup Postgres repository
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Add Postgres repository
RUN sh -c "echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" >> /etc/apt/sources.list.d/postgresql.list"
# Update repository
RUN apt-get update -y
# Install Postgres with Postgis
RUN apt-get install postgresql-9.3-postgis-2.1 -y
EXPOSE 5432
그리고나서는 사용하게 될 postgres 계정의 비밀번호를 설정해주고
postgres에서 외부에서 접속이 가능하도록 postgresql.conf 파일과
pg_hba.conf 파일을 수정해줍니다.
RUN echo "postgres:postgres" | chpasswd
RUN chown postgres:postgres /usr/bin/psql
RUN chown postgres:postgres /etc/init.d/postgresql
WORKDIR /etc/postgresql/9.3/main
RUN sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" postgresql.conf
RUN echo "host all all 0.0.0.0/0 password" >> pg_hba.conf
ADD . /var/lib/postgresql/9.3/main
WORKDIR /var/lib/postgresql/9.3/main
RUN chown postgres:postgres *
RUN chmod 774 /usr/bin/psql /etc/init.d/postgresql
USER postgres
RUN chmod +x /etc/init.d/postgresql
RUN ls -l
RUN /etc/init.d/postgresql start && /usr/bin/psql -c "ALTER USER postgres WITH PASSWORD 'postgres'" \
&&/usr/bin/psql -d postgres -f tpcc_postgres_insert_ddl.psql && \
/usr/bin/psql -d postgres -f bmsql_district_bmsql_config_warehouse.sql &&\
/usr/bin/psql -d postgres -f bmsql_item.sql &&\
/usr/bin/psql -d postgres -f bmsql_customer.sql &&\
/usr/bin/psql -d postgres -f bmsql_stock.sql
CMD service postgresql start
ADD를 이용해서 .sql 확장자를 가진 파일들을 모두 옮겨줍니다.
psql -d [DB 명] -f [파일명]
명령어를 통해 sql 파일들을 실행해 스키마를 구성해주고 데이터를 넣어줍니다.
여기서 중요한 것이 있습니다!
제가 /etc/init.d/postgresql start를 하고 && and 연산을 통해 psql 명령어를 이어붙인 것을 볼 수 있습니다.
RUN /etc/init.d/postgresql start && /usr/bin/psql -c "ALTER USER postgres WITH PASSWORD 'postgres'" \
&&/usr/bin/psql -d postgres -f tpcc_postgres_insert_ddl.psql && \
/usr/bin/psql -d postgres -f bmsql_district_bmsql_config_warehouse.sql &&\
/usr/bin/psql -d postgres -f bmsql_item.sql &&\
/usr/bin/psql -d postgres -f bmsql_customer.sql &&\
/usr/bin/psql -d postgres -f bmsql_stock.sql
이렇게 && 연산으로 붙여주지 않으면 postgresql이 계속 꺼져있는 것을 알 수있습니다.
RUN은 1회성 명령어인 것 같습니다.
저는 이부분 때문에 몇시간을 날린지 모르겠습니다.
전체 Dockerfile 입니다.
# created by mskim
# Set the base image to Ubuntu
FROM ubuntu:14.04
# Update the repository sources list
RUN apt-get update -y
################## BEGIN INSTALLATION ######################
# Postgres with Postgis
# Install wget
RUN apt-get install wget -y
# Setup Postgres repository
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Add Postgres repository
RUN sh -c "echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" >> /etc/apt/sources.list.d/postgresql.list"
# Update repository
RUN apt-get update -y
# Install Postgres with Postgis
RUN apt-get install postgresql-9.3-postgis-2.1 -y
EXPOSE 5432
RUN echo "postgres:postgres" | chpasswd
RUN chown postgres:postgres /usr/bin/psql
RUN chown postgres:postgres /etc/init.d/postgresql
WORKDIR /etc/postgresql/9.3/main
RUN sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" postgresql.conf
RUN echo "host all all 0.0.0.0/0 password" >> pg_hba.conf
ADD . /var/lib/postgresql/9.3/main
WORKDIR /var/lib/postgresql/9.3/main
RUN chown postgres:postgres *
RUN chmod 774 /usr/bin/psql /etc/init.d/postgresql
USER postgres
RUN chmod +x /etc/init.d/postgresql
RUN ls -l
RUN /etc/init.d/postgresql start && /usr/bin/psql -c "ALTER USER postgres WITH PASSWORD 'postgres'" \
&&/usr/bin/psql -d postgres -f tpcc_postgres_insert_ddl.psql && \
/usr/bin/psql -d postgres -f bmsql_district_bmsql_config_warehouse.sql &&\
/usr/bin/psql -d postgres -f bmsql_item.sql &&\
/usr/bin/psql -d postgres -f bmsql_customer.sql &&\
/usr/bin/psql -d postgres -f bmsql_stock.sql
CMD service postgresql start
Docker를 이용해 DB를 구성중이시라면 꼭 참고하시길 바랍니다!
'개발 이야기 > 오픈소스' 카테고리의 다른 글
# CKA(Certified Kubernetes Administrator) 취득기 (0) | 2020.12.16 |
---|---|
# IaaS 오픈소스 OpenStack 개요, OpenStack SDK 사용법(Golang) (4) | 2020.11.16 |
# Dockerfile로 임시 빌드 환경 구성하기(Dockerfile 응용하기) (0) | 2020.08.13 |
# Git 사용하기, conflict 처리하기, branch 만들기 (0) | 2020.05.05 |
# 오픈소스 OpenTracing - Jaeger (0) | 2020.03.25 |