diff --git a/Makefile b/Makefile index a106b8d..3460563 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,13 @@ -# Ver: 1.3 by Endial Fang (endial@126.com) +# Ver: 1.4 by Endial Fang (endial@126.com) # # 当前 Docker 镜像的编译脚本 -app_name := colovu/postgres +app_name :=colovu/postgres -# 生成镜像TAG,类似:<镜像名>:<分支名>- 或 <镜像名>:latest-<年月日>-<时分秒> +# 生成镜像TAG,类似: +# <镜像名>:<分支名>- # Git 仓库且无文件修改直接编译 +# <镜像名>:<分支名>-<年月日>-<时分秒> # Git 仓库有文件修改后的编译 +# <镜像名>:latest-<年月日>-<时分秒> # 非 Git 仓库编译 current_subversion:=$(shell if [[ -d .git ]]; then git rev-parse --short HEAD; else date +%y%m%d-%H%M%S; fi) current_tag:=$(shell if [[ -d .git ]]; then git rev-parse --abbrev-ref HEAD | sed -e 's/master/latest/'; else echo "latest"; fi)-$(current_subversion) @@ -13,27 +16,48 @@ build-arg:=--build-arg apt_source=tencent # 设置本地下载服务器路径,加速调试时的本地编译速度 local_ip:=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $$2}'|tr -d "addr:"` -build-arg+=--build-arg local_url=http://$(local_ip)/dist-files/ +build-arg+=--build-arg local_url=http://$(local_ip)/dist-files +#--build-arg local_url=http://192.168.1.187/dist-files/postgresql -.PHONY: build clean clearclean upgrade +.PHONY: build build-debian build-alpine clean clearclean upgrade -build: +build-debian: + @echo "Build $(app_name):$(current_tag)-deb" + @docker build --force-rm $(build-arg) -t $(app_name):$(current_tag)-deb . + @echo "Add tag: $(app_name):latest-deb" + @docker tag $(app_name):$(current_tag)-deb $(app_name):latest-deb + +build-alpine: @echo "Build $(app_name):$(current_tag)" - @docker build --force-rm $(build-arg) -t $(app_name):$(current_tag) . + @docker build --force-rm $(build-arg) -t $(app_name):$(current_tag) ./alpine @echo "Add tag: $(app_name):latest" @docker tag $(app_name):$(current_tag) $(app_name):latest -# 清理悬空的镜像(无TAG)及停止的容器 -clean: - @echo "Clean untaged images and stoped containers..." - @docker ps -a | grep "Exited" | awk '{print $$1}' | xargs docker rm - @docker images | grep '' | awk '{print $$3}' | xargs docker rmi -f +build: build-debian build-alpine + @echo "Build complete" +# 清理悬空的镜像(无TAG)及停止的容器 clearclean: clean + @echo "Clean untaged images and stoped containers..." + @docker ps -a | grep "Exited" | awk '{print $$1}' | sort -u | xargs -L 1 docker rm + @docker images | grep '' | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f + +# 为了防止删除前缀名相同的镜像,在过滤条件中加入一个空格进行过滤 +clean: @echo "Clean all images for current application..." - @docker images | grep "$(app_name)" | awk '{print $$3}' | xargs docker rmi -f + @docker images | grep "$(app_name) " | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f + +tag: + @echo "Add tag: $(local_registory)/$(app_name):latest" + @docker tag $(app_name):latest $(local_registory)/$(app_name):latest + +push: tag + @echo "Push: $(local_registory)/$(app_name):latest" + @docker push $(local_registory)/$(app_name):latest + @echo "Push: $(app_name):latest" + @docker push $(app_name):latest # 更新所有 colovu 仓库的镜像 upgrade: @echo "Upgrade all images..." - @docker images | grep 'colovu' | grep -v '' | grep -v "latest-" | awk '{print $$1":"$$2}' | xargs -L 1 docker pull + @docker images | grep 'colovu' | grep -v '' | grep -v "latest-" | awk '{print $$1":"$$2}' | sort -u | xargs -L 1 docker pull diff --git a/README.md b/README.md index 315451b..1f1fe5d 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ **版本信息:** -- 11、11.8、latest -- 10、10.13 +- 11、latest +- 10 **镜像信息:** @@ -22,7 +22,7 @@ Docker 快速启动命令: ```shell -$ docker run -d --name postgres -e ALLOW_EMPTY_PASSWORD=yes colovu/postgres:latest +$ docker run -d -e ALLOW_ANONYMOUS_LOGIN=yes colovu/postgres ``` Docker-Compose 快速启动命令: @@ -35,7 +35,7 @@ $ docker-compose up -d -**** +--- @@ -47,13 +47,13 @@ $ docker-compose up -d ### 数据卷 -镜像默认提供以下数据卷定义: +镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应`postgres`子目录中: ```shell -/var/log # 日志输出,应用日志输出,非数据日志输出 -/srv/conf # 配置文件 -/srv/data # 数据文件 -/srv/datalog # 数据操作日志文件 +/var/log # 日志输出,应用日志输出,非数据日志输出 +/srv/conf # 配置文件 +/srv/data # 数据文件 +/srv/datalog # 数据操作日志文件 ``` 如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行数据卷映射。 diff --git a/docker-compose.yml b/docker-compose.yml index 3a8be07..f9046e9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.6' +version: '3.8' # Docker-Compose 单容器使用参考 YAML 配置文件 # 更多配置参数请参考镜像 README.md 文档中说明 @@ -7,13 +7,19 @@ services: image: 'colovu/postgres:latest' ports: - '5432:5432' - restart: always volumes: - - $PWD/conf:/srv/conf - - $PWD/log:/var/log - - $PWD/datalog:/srv/datalog - - $PWD/data:/srv/data + - 'app_conf:/srv/conf' + - 'app_data:/srv/data' + - 'app_datalog:/srv/datalog' environment: - - PG_USERNAME=postgres - - PG_PASSWORD=colovu - - PG_DATABASE=postgres + # ALLOW_ANONYMOUS_LOGIN is recommended only for development. + - ALLOW_ANONYMOUS_LOGIN=yes + +# 定义本地数据卷,由系统管理,需要手动删除 +volumes: + app_conf: + driver: local + app_data: + driver: local + app_datalog: + driver: local