由于参加阿里云pgAdmin4共创任务,刚好发现pgAdmin居然提供了Docker版本,心想便于交流自己的成果,就将它部署到我的ECS上吧。在整个过程也是对于Docker的学习加深了一些,以此分享。
首先,获取docker版的pgadmin4。使用命令:
docker pull dpage/pgadmin4
最开始我没有看官网就安装了,是使用docker搜索的,然后安装Starts最多的,结果发现是官网提供的就是Starts最多的了。搜索命令如下:
docker search pgadmin4
搜索到docker后,以名字获取。就是第一条命令了。
根据官方文档介绍,需要一些环境变量,针对HTTPS时更多,这里仅介绍两个最重要的(HTTP时仅需要的两个,HTTPS也是必须的)。
- PGADMIN_DEFAULT_EMAIL:这个可以作为你登录Pgadmin4的用户名;
- PGADMIN_DEFAULT_PASSWORD:登录Pgadmin4的默认密码。
然后以HTTP方式启动Docker,命令如下:
docker run -p 80:80 \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-d dpage/pgadmin4
关于docker run使用的参数:
- p:端口映射,冒号前面是主机的端口,后面是容器中的端口。上例中是将容器的80端口映射到主机的80端口。
- e:设置环境变量。
- d:在后台运行容器,并打印出容器的ID(只有以d参数运行后,才支持使用stop/start/restart命令对指定ID的容器进行操作)
启动HTTPS的命令如下:
docker run -p 443:443 \
-v "/private/var/lib/pgadmin:/var/lib/pgadmin" \
-v "/path/to/certificate.cert:/certs/server.cert" \
-v "/path/to/certificate.key:/certs/server.key" \
-v "/tmp/servers.json:/servers.json" \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-e "PGADMIN_ENABLE_TLS=True" \
-d dpage/pgadmin4
我只启动了HTTP模式。
然后我对pgAdmin4进行了相关修改。
之后我使用putty的pscp命令将我的修改上传到ECS中。命令如下:
将方括号[]中的值替换为实际值即可完成向远程拷贝文件。同时,如果将远程文件拷贝到本地,则将pscp后面的两个参数调换位置即可。
支持目录传输的是psftp命令。我没有使用。所以如果你要使用自己查看参数,--help即可查看参数。
下一步操作是要将修改后的文件替换到docker中。
docker窗口已经启动,确认docker中的目录结果,运行如下命令:
docker exec -it 12xxxxx /bin/sh
上面命令是在ID为12xxxxx的容器中执行/bin/sh命令。其中参数
- i:代表在没有附加到容器时也使用STDIN输出信息。
- t:分配一个虚拟的TTY。
拷贝文件到容器中,执行如下命令:
docker cp [localfile] 12xxxxx:[path]
上面是将主机文件拷贝到窗口中,如果需要重命名在[path]中指定目标文件名即可,不重命名只指定目录即可。替换上面的方括号中参数为具体值即可完成容器和主机间文件的传输。
拷贝完文件为了使用新文件生效,可以使用下列命令重启容器:
docker restart 12xxxxx
注意:容器ID是一个很长的字符串,我们只要输入前几位能唯一标识出容器即可。
下图是我部署后的pgAdmin4的运行效果: