1. 安装 Docker
请参考官方文档
允许非 root 用户管理 Docker
$ sudo add groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
2. 部署 Postgresql
启动容器
$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
用户名 postgres 首次登陆
进入容器内的终端
$ docker container exec -it some-postgres su postgres
修改默认用户 postgres 的密码
$ psql
\password postgres
输入两次密码并确认
添加用户和授权
在 postgres 控制台内,创建新用户 test:
CREATE USER test WITH PASSWORD '******';
创建数据库,指定拥有者为 dbuser:
CREATE DATABASE testdb OWNER test;
赋予 dbuser 操作数据库的所有权限:
GRANT ALL PRIVILEGES ON DATABASE testdb to test;
开启登录权限和设置服务状态
确认配置文件位置
$ psql -U postgres -c 'SHOW config_file'
修改 postgresql.conf
配置文件:
$ sudo vim /etc/postgresql/10/main/postgresql.conf
修改或添加下面一行:
listen_addresses = '*'
修改 pg_hba.conf
配置文件:
$ sudo vim /etc/postgresql/10/main/pg_hba.conf
修改或添加下面一行:
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
保存文件,重启 postgresql 服务,并设置开机自动启动:
$ sudo systemctl restart postgresql
$ sudo systemctl enable postgresql
查看服务状态和关闭服务的命令分别为:
$ sudo systemctl status postgresql
$ sudo systemctl stop postgresql
3. 将容器端口映射到主机端口
这一步可以让外部用户通过主机端口访问容器内的应用
如果在 docker run 启动的时候没有指定端口映射,可以通过以下步骤添加
$ docker inspect some-container |grep Id # 查找容器 id
$ docker stop some-container # 停止容器
$ systemctl stop docker # 停止 Docker 服务
找到容器的配置文件目录
$ cd /var/lib/docker/containers/some-container-id
修改 hostconfig.json
, 将容器端口映射到主机端口:
"5432/tcp": [{"HostIp":"","HostPort":"5432"}]
修改 config.v2.json
, 在 ExposedPorts
中加入要暴露的端口:
ExposedPoerts:{"5432/tcp":{}}
重启 Docker 后,外部设备就可以通过 主机IP:5432
访问应用了
文章评论