【Docker初探】第五节:安装PostgreSQL+Nginx

相关资料:

【Docker初探】第一节:Docker+Alpine+Openssh+Supervisor部署Linux基础环境

【Docker初探】第二节:安装alpine-pkg-glibc,部署java环境

【Docker初探】第三节:导入导出镜像及压缩

【Docker初探】第四节:使用mount挂载共享文件夹(cifs)

本节内容接第二节的镜像继续安装PostgreSQL+Nginx,Dockerfile内容如下:

# 基于alpine的镜像
FROM highlevel/alpine-server:glibc
MAINTAINER Docker PPHT <[email protected]>

RUN apk --no-cache add postgresql redis nginx curl \
    && mkdir /run/nginx/ \
    && mkdir /root/pgdata/ \
    && mkdir /run/postgresql/ \
    && chown -R postgres /root/ \
    && chown -R postgres /root/pgdata/ \
    && chown -R postgres /run/postgresql/ \
    && su -c "initdb -D /root/pgdata/" postgres \
    && echo "host    all     all             192.168.1.1/0                 trust" >> /root/pgdata/pg_hba.conf \
    && sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /root/pgdata/postgresql.conf \
    && sed -i '1a su -c "pg_ctl start -D /root/pgdata/" postgres' /root/start.sh \
    && sed -i '1a nginx' /root/start.sh \
    && rm -rf /var/cache/apk/*


# 开端口
EXPOSE 22
EXPOSE 9001
EXPOSE 80
EXPOSE 443
EXPOSE 5432

CMD /root/start.sh

在命令行切换到根目录,执行下面命令,建立docker镜像:

docker build -t highlevel/alpine-server:web .

先删除上一节的镜像:

docker rm alpine-glibc

运行镜像:

docker run --name alpine-web -p 10022:22 -p 9001:9001 -p 5432:5432 -p 80:80 -p 443:443
 -it highlevel/alpine-server:web

配置文件中,数据库文件在/root/pgdata/目录下 ,这里要注意,目录一定要有postgres用户权限。

另外,如果要外挂共享文件夹(第四节),文件夹一定要是linxu的etx文件系统才可授权postgres用户权限。外挂共享文件夹后,执行初始化数据库,代码如下:

//初始化数据库
su -c "initdb -D /数据库目录/" postgres

//启动数据库
su -c "pg_ctl start -D /数据库目录/" postgres

//用下面代码添加到自启动
sed -i '1a su -c "pg_ctl start -D /数据库目录/" postgres' /root/start.sh

默认用户:postgres,密码:postgres 

发布了28 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/highlevels/article/details/95065202