公交车网站怎么做留言板,帮忙建设公司网站,什么平台打广告比较好免费的,怎么做网站手机版使用Docker部署postgresql
postgresql数据库在Docker中的镜像的名称为postgres#xff0c;可以从DockerHub中pull下来#xff0c;如果pull不下来那么很大概率是网络问题导致的#xff0c;这时候你可能需要在网上找一些能用的镜像源#xff0c;以成功拉取postgres镜像。
有…使用Docker部署postgresql
postgresql数据库在Docker中的镜像的名称为postgres可以从DockerHub中pull下来如果pull不下来那么很大概率是网络问题导致的这时候你可能需要在网上找一些能用的镜像源以成功拉取postgres镜像。
有了postgres的镜像之后你就可以在本地的Docker创建一个postgres的容器并运行。我们有两种方式来创建容器
直接使用命令行来创建postgres的容器并运行使用docker-compose来创建postgres的容器并运行
这里先介绍使用命令行的方式来创建postgres容器的方式
docker run -d
--name postgres-exprdb
-p 5432:5432
-e POSTGRES_PASSWORD123456
-e POSTGRES_USERaderversa
-e POSTGRES_DBtestdb
-v ~/postgresql/data:/var/lib/postgresql/data
postgres-e是用来设置postgres容器中环境变量的值的有些特殊的环境变量将会影响到启动后的postgresql的一些参数比如postgresql数据库的密码、用户等等。具体一些环境变量的含义可以查看dockerhub中有关于环境变量的介绍本文的最后也会介绍一些环境变量的含义。-p将PostgreSQL的5432端口暴露到宿主机的5432端口方便我们在外部访问容器内的PostgreSQL服务。-v将容器内的/var/lib/postgresql/data文件夹挂载到宿主机的~/postgresql/data文件夹下这样数据库中的数据就不会因为我们删除了容器而丢失。你需要自己定义好这个数据文件夹该挂载到自己主机的什么地方上这里我给出的值仅做参考。--name postgres-exprdb指定创建的PostgreSQL容器的名字。-d表示该容器在后台运行并打印创建容器的ID到控制台。postgres是我们所使用的镜像。
运行上述命令使用docker ps查看容器状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1f5d4521cd0 postgres docker-entrypoint.s… 8 seconds ago Up 7 seconds 0.0.0.0:5432-5432/tcp postgres-exprdb可以看见容器已经在后台运行了。之后我们可以使用别的什么工具去访问已经创建好的testdb数据库用定义好的特权用户aderversa以及指定好的密码123456。 IP已知端口已知用户名和密码都有了那么你就可以用你能想象到的方式去连接这个PostgreSQL数据库啦。 使用docker-compose来部署
相比于在命令行中写冗长的命令我更喜欢将容器的配置写到docker-compose.yaml文件中然后一行
docker compose -f docker-compose.yaml -p package_name up -d-f指定要要操作的文件。-p指定项目的名称。up是创建并启动容器的命令。-d表示容器在后台启动。
比如我编写了一个docker-compose.yaml文件
version: 3.8services:database_expr:image: postgres:latestcontainer_name: postgres-exprrestart: on-failure:3ports:- 5432:5432volumes:- ./db:/var/lib/postgresql/datahealthcheck:test: [ CMD, pg_isready ]interval: 10stimeout: 5sretries: 5environment:- POSTGRES_PASSWORD123456- POSTGRES_USERaderversa- POSTGRES_DBtestdb直接对其进行操作就可以创建好容器并启动用户不需要关心里面有什么配置。甚至如果你觉得使用docker compose的命令行来启动不够抽象那么你可以将它编写入shell脚本中用户直接运行脚本只要用户安装了Docker环境就可以安装PostgreSQL成功他甚至不需要关心Docker命令应该如何使用。
进入postgres容器中执行SQL
使用命令
docker ps查找出刚才创建的PostgreSQL容器的ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcf5e3c0ff7f postgres:latest docker-entrypoint.s… 13 hours ago Up 13 hours (healthy) 0.0.0.0:5432-5432/tcp postgres-expr获得container_id dcf5e3c0ff7f接着我们使用以下命令进入容器的bash中方便在操作容器
docker exec -it dcf5e3c0ff7f /bin/bash注意如果是在Windows下执行这条命令的时候使用Git Bash来执行可能会因为终端的一些问题执行失败此时需要更换一下执行命令的终端比如PowerShell。 进入到容器中是这个样子的 docker exec -it dcf5e3c0ff7f /bin/bash
rootdcf5e3c0ff7f:/# 第一行是在PowerShell中执行的而第二行则是PostgreSQL容器中运行的bash进程。
接着我们就可以使用
psql [OPTION]... [DBNAME [USERNAME]]这里介绍连接数据库需要使用的OPTION选项具体的你可以使用psql --help来查看
-h指定PostgreSQL数据库的IP地址。-p指定PostgreSQL数据库的端口号。-U指定登录到数据库的用户名不指定默认就是root。-w从不提示输入密码字面意思不需要输入密码来进行访问数据库默认是不需要输入密码的。-W强制密码输入。
按照这个用法我们可以用以下两种方式连接数据库
# 这里由于我们在创建容器的时候指定的特权用户是aderversa因此root被挤占掉了
# 用户名对于我这里来说是必须设置的。
psql -p 127.0.0.1 -p 5432 -U aderversa testdb 或者省事一点直接使用
psql testdb aderversa执行成功后我们就能够进入psql的命令行
psql (17.2 (Debian 17.2-1.pgdg1201))
Type help for help.testdb#psql的使用
这里我们并不知道如何使用这个命令行它提示我们可以使用help来获得帮助那么就执行一波help得到了以下信息
You are using psql, the command-line interface to PostgreSQL.
Type: copyright for distribution termsh for help with SQL commands? for help with psql commandsg or terminate with semicolon to execute queryq to quit这里它告诉我们 copyright可以PostgreSQL DDMS的一些条款里面大概是说不管你出于何种目的该软件和其文档都是允许你使用、复制、修改和发布的并且是不需要任何费用不需要修改的同意…看起来是非常宽松的声明毕竟PostgreSQL遵循的是BSD协议。 h显示SQL命令比如CREATE TABLE ALTER TABLE…。 ?显示psql的命令这里面还是非常多命令的大多都是用来查看数据库的状态的比如存在什么表、数据库、视图之类的。这里介绍一些常用的、简单的命令 l列出所有数据库c[onnect]连接到数据库某个数据库如果先前有连接到某个数据库那么这个操作就是更换连接的数据库dt查看正在使用的数据库中存在哪些表注意默认创建的表似乎是不会列出来的 g执行psql的上一个命令。 q退出psql。
以上就是psql的基本用法了你可以按照自己的在上面执行SQL语句比如
create table user ( id int primary key );注意SQL命令以;结尾就可以了。
创建完成后可以使用
dt来查看你是否创建成功。
接下来就是你发挥创造力的时候了自己尝试着使用psql吧。
补充postgres容器的环境变量
POSTGRES_PASSWORD必要的环境变量。这个环境变量将设置PostgreSQL容器中特权用户的密码。如果你要使用PostgreSQL镜像让它以容器的形式的运行那么这个环境变量就必须要设置它一定不能够为空或者未定义。默认的特权用户将由POSTGRES_USER来定义。POSTGRES_USER可选的环境变量。设置PostgreSQL容器中的特权用户名需要与POSTGRES_PASSWORD一起使用以此设置好特权用户的名字和密码。如果该环境变量未被指定那么默认的特权用户名为postgres。POSTGRES_DB可选的环境变量。定义容器首次运行创建的默认数据库的名字。如果该环境变量未被使用那么该环境变量的值等于POSTGRES_USER的值。POSTGRES_INITDB_ARGS可选的环境变量。大概最终是以这种方式被利用postgres initdb ${POSTGRES_INITDB_ARGS}。POSTGRES_INITDB_WALDIR可选的环境变量。定义PostgreSQL事务日志的位置。默认的事务日志的位置是PostgreSQL主数据文件夹PGDATA指定下的一个子文件夹。POSTGRES_HOST_AUTH_METHOD可选的环境变量。个人理解似乎是与密码摘要相关的东西这一般不需要我们关注如果有兴趣可以去PostgreSQL: Documentation: 14: 21.5. Password Authentication了解一下。PGDATA可选的环境变量。定义PostgreSQL主数据文件夹的位置默认是/var/lib/postgresql/data如果有调整位置的需求那么可以按需求设置该变量的值。