一、使用dockerpgsql的好處
1、便於管理和部署:通過使用dockerpgsql,管理員可以很方便地管理和部署PostgreSQL資料庫,無需考慮在操作系統上進行安裝和配置的問題。
2、可靠性和安全性:通過容器化PostgreSQL資料庫,它們可以隔離在容器內,避免不同數據所帶來的安全隱患。同時,每個容器都有獨立的文件系統,可以防止容器之間的數據干擾和相互影響。
3、易於擴展:使用dockerpgsql,管理員可以很容易地為正在運行的PostgreSQL容器添加新的資源。這樣可以實現動態的資源分配,在高峰時段自動擴展容器來滿足請求。
二、在dockerpgsql容器中運行PostgreSQL資料庫
要在dockerpgsql容器中運行PostgreSQL,需要進行以下步驟:
1、創建dockerpgsql鏡像:
FROM postgres:11.2
RUN mkdir -p /etc/postgresql \
&& mkdir -p /var/run/postgresql \
&& chown -R postgres:postgres /etc/postgresql /var/run/postgresql
COPY postgresql.conf /etc/postgresql/
COPY pg_hba.conf /etc/postgresql/
EXPOSE 5432
CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"]
2、創建docker-compose.yml文件:
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
3、運行docker-compose命令:
docker-compose up
三、數據的掛載和備份
在PostgreSQL容器中,數據是存儲在容器內的。要將數據掛載到宿主機上,需要進行以下步驟:
1、創建一個磁碟卷:
docker volume create pgdata
2、在docker-compose.yml文件中指定掛載路徑:
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
volumes:
- pgdata:/var/lib/postgresql/data/pgdata
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
pgdata:
3、使用pg_dump進行備份:
pg_dump -U postgres -F c my_db > my_db.dump
四、網路配置和埠映射
在默認情況下,PostgreSQL容器運行在自己的網路命名空間中,並且只能通過容器的IP地址訪問。要通過其他主機訪問容器運行的PostgreSQL資料庫,需要進行以下步驟:
1、指定容器中PostgreSQL資料庫使用的埠(默認5432):
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
ports:
- "5432:5432"
2、使用宿主機網路:
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
network_mode: host
五、Docker Compose的使用技巧
1、使用Docker網路進行容器之間的通信:
在一個Docker Compose項目中,可以創建多個容器。如果這些容器需要相互通信,可以使用Docker網路進行連接。在docker-compose.yml文件的頂部指定網路名稱:
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
networks:
- mynetwork
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
networks:
- mynetwork
networks:
mynetwork:
2、使用環境變數:
在docker-compose.yml文件中,可以使用環境變數來設置服務配置。這樣可以避免在修改配置時對docker-compose.yml文件進行頻繁的修改。例如:
version: '3'
services:
db:
image: my-postgres
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
在運行時,可以通過設置環境變數來傳遞值:
export POSTGRES_PASSWORD=123456
docker-compose up
原創文章,作者:AYOZU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333531.html