相关资料:
【Docker初探】第一节:Docker+Alpine+Openssh+Supervisor部署Linux基础环境
【Docker初探】第二节:安装alpine-pkg-glibc,部署java环境
【Docker初探】第四节:使用mount挂载共享文件夹(cifs)
源码:https://github.com/tfwcn/docker-alpine-server
本节内容接第二节的镜像继续安装PostgreSQL+Nginx,Dockerfile内容如下:
# 基于alpine的镜像
FROM highlevel/alpine-server:glibc
MAINTAINER Docker PPHT <tfwcn@sina.cn>
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