기존에는 자체 서버에 mysql이 깔려있어서 여기에 접속하여 사용했는데, postgresql로 DB를 이전하게 되었는데 사용하는 서버에는 이게 깔려있지 않았다. 또한 mysql이 버전 문제가 많고, 매번 관리자에게 요청 보내기 보다는 항상 docker 사용을 권장해서.. 도커로 postgresql, mysql을 연결하였고, 파이썬 orm sqlalchemy로 이 주소를 연결하여 사용해보았다.
1. 도커 이미지 받아오기
https://hub.docker.com/_/postgres/tags
docker pull postgres:15
버전 충돌 이슈가 있을까봐 버전을 지정하여 다운받았다.
2. 도커 컨테이너 생성하기
docker run -p 5432:5432 --name tmp-postgres -e POSTGRES_PASSWORD=[SET_YOUR_PASSWORD]
-v /home/docker/pgdata:/var/lib/postgresql/data -d postgres:15
3. 컨테이너 내부로 들어가서 PostgreSQL 실행 확인
docker exec -it tmp-postgres psql -U postgres # 기본 사용자
\l # 내부 데이터베이스 목록 확인
CREATE DATABASE this_is_new_db;
이렇게 실행하면 도커에서 바로 postgres라는 디폴트 사용자로 postgre 안으로 접속하게 된다.
접속하여 새로운 데이터베이스를 만들어준다.
4. DB URL 주소 가져오기
이제 컨테이너가 띄워졌으니 이 주소를 연결하여 파이썬에서 사용해보자.
DB_URL = "postgresql://postgres:[SET_YOUR_PASSWORD]@[PostgreSQL container IP address]/this_is_new_db"
[SET_YOUR_PASSWORD]는 컨테이너 생성시 사용한 패스워드이고,
[PostgreSQL container IP address]는 현재 띄워져 있는 postgresql 컨테이너의 IP 주소를 가져와야 한다.
이것은 다음 커맨드라인 명령어로 찾을 수 있다.
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
간혹 IP 주소 여러 개가 붙어나오는데, 하나가 아니니 주의해서 분리하면 된다.
5. SQLAlchemy에서 사용하기
이 주소를 사용하여 데이터베이스 엔진을 형성하면 된다.
engine = create_engine(url=DB_URL)
session = sessionmaker()
session.configure(bind=engine, expire_on_commit=False)
다음 포스팅들을 참고하면 자세한 docker 연결법에 대해서 도움을 받을 수 있다.
- PostgreSQL 연결하기: https://www.bearpooh.com/122
- MySQL 연결하기: https://wooiljeong.github.io/server/docker-mysql/
'Dev Notes > BE' 카테고리의 다른 글
NAS vs NFS (0) | 2025.02.26 |
---|---|
[Database] MySQL 커넥터 비교하기 (0) | 2023.05.28 |
[Network] API와 gRPC vs REST (0) | 2023.05.21 |
[Database] ORM과 python에서 postgresql 연결하기 (0) | 2023.05.16 |