docker-compose示例1

install.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#! /bin/bash
lj=$(pwd)

# usage
usage(){
echo "##############################"
echo -e "\033[31m 用法:$0 当前服务器IP地址 \033[0m"
echo -e "\033[31m 示例:$0 192.168.1.10 \033[0m"
echo "##############################"
}

# port
port(){
if docker ps -a --no-trunc --format "table {{.Names}}"| grep -i ${2}; then
echo -e "\033[31m ERROR: ${2} container already exists !!! | ${2} 容器已经存在,请手动执行相关命令!!!\033[0m"
exit
else
if [ "$(/usr/sbin/lsof -i :${1}|grep -v "PID" | awk '{print $2}')" != "" ]
then
echo -e "\033[31m ERROR: ${1} port is already in use !!! | 错误: ${1} 端口已经被使用!!!\033[0m"
exit
else
echo -e "\033[32m ${1} ready !!! | ${1} 空闲 !!! \033[0m"
fi
fi
}


# 检测命令执行格式
if [ $# -ne 1 ]; then
usage
exit 1
else
if [[ $1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
echo -e "\033[31m 服务器IP:$1 \033[0m"
else
usage
exit 1
fi
fi

# install lsof
if rpm -qa|grep lsof; then
echo -e "\033[32m ## lsof 已经安装 \033[0m"
else
echo -e "\033[32m ## install lsof \033[0m"
yum localinstall -y ${lj}/docker/lsof/lsof-4.87-6.el7.x86_64.rpm
fi

# install docker
echo "################################################################################"
cd ${lj}
echo -e "\033[32m ### install docker \033[0m"
cd docker
sh install-docker.sh docker-18.09.5.tgz
cp docker-compose /usr/local/bin/
cd ${lj}

# edit mapserv test file
echo "################################################################################"
echo -e "\033[32m ### edit mapserv main.js file::: ${lj}/mapdata/client/js/main.js \033[0m"
sed -i "21c url: 'http://${1}:10000/gdw/wms/demo?/'," ${lj}/data/client/js/main.js
echo "SERVER_IP=${1}" > .env

# Import image
echo "################################################################################"
echo -e "\033[32m ### import docker image \033[0m"
gunzip -c ${lj}/docker/postgresql.tar.gz | docker load
gunzip -c ${lj}/docker/redis.tar.gz | docker load
gunzip -c ${lj}/docker/gdwserv.tar.gz | docker load
gunzip -c ${lj}/docker/httpd.tar.gz | docker load

# 检测端口及容器占用
port 6379 crawler_redis
port 5432 crawler_postgis
port 10000 crawler_crawler
port 8199 crawler_crawler
port 2999 crawler_httpd

# create network zhjx
#if [ "$(docker network list | awk '{print $2}'|grep zhjx)" != "" ]; then
# echo -e "\033[32m ## zhjx network already exists && zhjx 网络已经存在 \033[0m"
#else
# echo -e "\033[32m ### create zhjx network \033[0m"
# docker network create zhjx
#fi

# start postgresql
#echo "################################################################################"
#if docker ps -a --no-trunc --format "table {{.Names}}"|grep crawler_postgis; then
# echo -e "\033[31m ERROR: crawler_postgis container already exists | crawler_postgis 容器 已经存在,请手动执行相关命令!!! \033[0m"
# exit
#else
# if [ "$(/usr/sbin/lsof -i :5432|grep -v "PID" | awk '{print $2}')" != "" ]
# then
# echo -e "\033[31m ERROR: 5432 port is already in use !!! | 错误:5432 端口已经被使用!!!\033[0m"
# exit
# else
# echo "start run crawler"
# docker run --network zhjx --name crawler_postgis --restart always -d -p 5432:5432 -e POSTGRES_PASSWORD=1qazxsw2 -v ${lj}/pgdata:/var/lib/postgresql/data mdillon/postgis:10
# fi
#fi
# start redis
#echo "################################################################################"
#if docker ps -a --no-trunc --format "table {{.Names}}"| grep -i crawler_redis; then
# echo -e "\033[31m ERROR: crawler_redis container already exists !!! | crawler_redis 容器已经存在,请手动执行相关命令!!!\033[0m"
# exit
#else
# if [ "$(/usr/sbin/lsof -i :6379|grep -v "PID" | awk '{print $2}')" != "" ]
# then
# echo -e "\033[31m ERROR: 6379 port is already in use !!! | 错误:6379 端口已经被使用!!!\033[0m"
# exit
# else
# echo -e "\033[32m start run redis \033[0m"
# docker run --network zhjx --name crawler_redis --restart always -d -p 6379:6379 -v ${lj}/redis:/data redis:5.0.9
# fi
#fi
## start crawler
#echo "################################################################################"
#if docker ps -a --no-trunc --format "table {{.Names}}"|grep crawler_mapser; then
# echo -e "\033[31m ERROR: crawler_mapser container already exists | crawler_mapser 容器 已经存在,请手动执行相关命令!!! \033[0m"
# exit
#else
# if [ "$(/usr/sbin/lsof -i :8080|grep -v "PID" | awk '{print $2}')" != "" ]
# then
# echo -e "\033[31m ERROR: 8080 port is already in use !!! | 错误:8080 端口已经被使用!!!\033[0m"
# exit
# else
# if [ "$(/usr/sbin/lsof -i :10000|grep -v "PID" | awk '{print $2}')" != "" ]
# then
# echo -e "\033[31m ERROR: 10000 port is already in use !!! | 错误:10000 端口已经被使用!!!\033[0m"
# exit
# else
# echo -e "\033[32m start run crawler \033[0m"
## docker run -u root --name crawler_mapser --network zhjx --restart always -d -p 10000:80 -p 8080:8080 -e LANG="en_US.utf8" -e JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k -Dfile.encoding="UTF8" -Dfile.encoding="UTF8"" -e REDIS_IP=${1} -e REDIS_PORT=6379 -e REDIS_TOKENS=5 -e BASEURL=http://${1}:10000/gdw -dti -v ${lj}/services/:/tomcat/webapps -v ${lj}/mapdata/:/usr/local/gdw/data gdwserv:v0.1_tomcat8
# docker run -u root --name crawler_mapser --network zhjx -d -p 10000:80 -p 8080:8080 -e LANG="en_US.utf8" -e JAVA_OPTS="-server -Xms2048m -Xmx4096m -Xss512k -Dfile.encoding="UTF8"" -e REDIS_IP=${1} -e REDIS_PORT=6379 -e REDIS_TOKENS=5 -e BASEURL=http://${1}:10000/gdw -dti -v ${lj}/service/:/tomcat/webapps -v ${lj}/data/:/usr/local/gdw/data/ -v ${lj}/service_data/root/crawler/:/root/crawler/ -v ${lj}/service_data/datafile/crawler:/datafile/crawler -v /service_data/data/ftp/:/data/ftp/ -v ${lj}/service_data/icons/crawler://icons/crawler -v ${lj}/service_data/vsicurl/:/vsicurl/ -v ${lj}/service_data/vsizip:/vsizip -v ${lj}/service_data/vsizip:/vsizip -v ${lj}/service_data/home/data/insight/:/home/data/insight/ gdwserv:v0.1_tomcat8
# fi
# fi
#fi

# start crawler
docker-compose up -d
sleep 2
docker ps
echo "----------------------------------------------------------------------------------------"
echo -e "\033[32m ALL Services install finish, Please view from the browser. http://${1}:8080/crawler \033[0m"
echo -e "\033[32m 所有服务安装完成,请通过浏览器访问.http://${1}:8080/crawler \033[0m"
echo "----------------------------------------------------------------------------------------"

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
version: "3"
services:
crawler:
image: gdwserv:v0.1_tomcat8
restart: always
depends_on:
- postgis
- redis
ports:
- "8199:8080"
- "10000:80"
volumes:
- "./service/:/tomcat/webapps"
- "./data/:/usr/local/gdw/data"
- "./service_data/root/crawler/:/root/crawler/"
- "./service_data/datafile/crawler:/datafile/crawler"
- "./service_data/data/ftp/:/data/ftp/"
- "./service_data/vsicurl/:/vsicurl"
- "./service_data/vsizip:/vsizip"
- "./service_data/home/data/insight:/home/data/insight"
environment:
- LANG="en_US.utf8"
# - JAVA_OPTS="-server -Xms2048m -Xmx4096m -Xss512k -Dfile.encoding="UTF8""
# 采用当前目录,默认 .env 文件内的变量
- REDIS_IP=${SERVER_IP}
- REDIS_PORT=6379
- REDIS_TOKENS=5
- BASEURL=http://${SERVER_IP}:10000/gdw
postgis:
image: mdillon/postgis:10
restart: always
ports:
- "5432:5432"
# 采用指定文件内的变量
env_file:
- .post_pass
volumes:
- "./pgdata:/var/lib/postgresql/data"
redis:
image: redis:6
restart: always
ports:
- "6379:6379"
volumes:
- "./redis:/data"
httpd:
image: httpd:2.4.46-alpine
restart: always
ports:
- "2999:80"
volumes:
- "./service_data/home/data/insight:/usr/local/apache2/htdocs"

uninstall.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#! /bin/bash
lj=$(pwd)
echo "################################################################################"
# del services
echo -e "\033[32m ### del services \033[0m"
docker-compose down

# del images
echo -e "\033[32m ### del images \033[0m"
docker rmi gdwserv:v0.1_tomcat8
docker rmi mdillon/postgis:10
docker rmi redis:6
docker rmi httpd:2.4.46-alpine

# del network zhjx
#echo -e "\033[32m ### del docker-network \033[0m"
#docker network rm zhjx

# del docker
echo -e "\033[32m ### del docker service \033[0m"
systemctl stop docker.service
SYSTEMDDIR=/usr/lib/systemd/system
SERVICEFILE=docker.service
DOCKERDIR=/usr/bin/
COMPOSEDIR=/usr/local/bin/
rm -rf ${DOCKERDIR}/docker*
rm -rf ${SYSTEMDDIR}/${SERVICEFILE}
rm -rf ${COMPOSEDIR}/docker-compose
systemctl daemon-reload

echo -e "\033[32m ALL Services delete \033[0m"
echo "----------------------------------------------------------------------------------------"
1 1 1
1 1 1
1 1 1
1 1 1
-------------本文结束感谢您的阅读-------------

本文标题:docker-compose示例1

文章作者:OperationMAN

发布时间:2021年04月10日 - 00:04

最后更新:2022年06月05日 - 21:06

原始链接:https://kxinter.gitee.io/2021/04/10/docker-compose示例1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!