Skip to content

Commit c1e118f

Browse files
committed
refactor xampp-* scripts
1 parent 0da9067 commit c1e118f

16 files changed

+220
-273
lines changed

bin/xampp-app

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#!/usr/bin/env bash
2+
3+
function main() {
4+
local xampp=$(dirname "$0")/ name=${PWD##*/}
5+
6+
local i version=latest env=prod rm run=YES
7+
for i in "$@"
8+
do
9+
case $i in
10+
:*)
11+
version="${i#*:}"
12+
shift
13+
;;
14+
15+
@*)
16+
env="${i#*@}"
17+
shift
18+
;;
19+
20+
--rm)
21+
run=
22+
rm=YES
23+
shift
24+
;;
25+
26+
--restart)
27+
run=YES
28+
rm=YES
29+
shift
30+
;;
31+
32+
*)
33+
;;
34+
esac
35+
done
36+
37+
[[ -n "$rm" ]] && {
38+
docker stop "$name" 2>/dev/null
39+
docker rm "$name" 2>/dev/null
40+
}
41+
42+
[[ -n "$run" ]] || {
43+
return 0
44+
}
45+
46+
"${xampp}"/xampp-env
47+
48+
mkdir -p ~/.composer
49+
mkdir -p ~/.npm
50+
mkdir -p ~/.ssh
51+
52+
# mount directories' symbolic links which are outside of the base directory as volumes to the container
53+
local base=${PWD} volumes link candidate relative
54+
for link in $(find "${base}" -type l); do
55+
candidate=$(readlink -f "${link}")
56+
[[ -d ${candidate} ]] && [[ ${candidate} != ${base}/* ]] && {
57+
relative=${link:${#base}+1:100}
58+
volumes="${volumes} --volume ${candidate}:/app/${relative}"
59+
}
60+
done;
61+
62+
mkdir -p ~/.local/share/xampp/"$name"
63+
touch ~/.local/share/xampp/"$name"/.bash_history
64+
65+
docker start "$name" 2>/dev/null || docker run -td --rm --net local \
66+
--name "$name" \
67+
--hostname "$name" \
68+
--label "traefik.enable=true" \
69+
--label "traefik.http.services.$name-3000.loadbalancer.server.port=3000" \
70+
--label "traefik.http.routers.$name-3000.service=$name-3000" \
71+
--label "traefik.http.routers.$name-3000.entrypoints=web-3000" \
72+
--label "traefik.http.routers.$name-3000.rule=Host(\`$name.localhost\`)" \
73+
--label "traefik.http.services.$name.loadbalancer.server.port=80" \
74+
--label "traefik.http.routers.$name.service=$name" \
75+
--label "traefik.http.routers.$name.entrypoints=web" \
76+
--label "traefik.http.routers.$name.rule=Host(\`$name.localhost\`)" \
77+
--label "traefik.http.routers.$name.middlewares=redirect-https@docker" \
78+
--label "traefik.http.routers.$name-secure.service=$name" \
79+
--label "traefik.http.routers.$name-secure.entrypoints=web-secure" \
80+
--label "traefik.http.routers.$name-secure.rule=Host(\`$name.localhost\`)" \
81+
--label "traefik.http.routers.$name-secure.tls=true" \
82+
-w /app \
83+
--env POSTFIX_RELAYHOST=mail:1025 \
84+
--env PHP_SENDMAIL_PATH="/usr/sbin/sendmail -t -i" \
85+
--env php.session.gc_maxlifetime=864000 \
86+
--env php.session.gc_divisor=1000 \
87+
--env php.session.cache_expire=180 \
88+
--env WEB_DOCUMENT_ROOT=/app \
89+
--env WEB_ALIAS_DOMAIN="*.localhost" \
90+
--env PHP_IDE_CONFIG="serverName=app" \
91+
--env COMPOSER_ALLOW_XDEBUG=1 \
92+
--env XDEBUG_PROFILER_ENABLE_TRIGGER=1 \
93+
--env XDEBUG_CONFIG="idekey=phpstorm" \
94+
--env XDEBUG_REMOTE_HOST=host.localhost \
95+
--env DOCKER_XAMPP_BIN_ENV="$env" \
96+
--env ACCOUNT="http://$name.localhost" \
97+
--volume ~/.local/share/xampp/"$name"/.bash_history:/home/app/.bash_history \
98+
--volume ~/.composer:/home/app/.composer \
99+
--volume ~/.npm:/home/app/.npm \
100+
--volume ~/.gitconfig:/home/app/.gitconfig:ro \
101+
--volume ~/.ssh:/home/app/.ssh:ro \
102+
--volume $(pwd):/app \
103+
--volume $(pwd):/opt/project \
104+
$volumes \
105+
"$@" \
106+
"xampp/app:$version"
107+
108+
docker exec -ti -u $UID "$name" bash
109+
}
110+
111+
main "$@"

bin/xampp-down

Lines changed: 0 additions & 4 deletions
This file was deleted.

bin/xampp-env

Lines changed: 99 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,122 @@
11
#!/usr/bin/env bash
22

3-
function up() {
4-
printf "xampp env up:\n"
3+
function main() {
4+
printf "xampp env:\n"
55
local network=local base=$(dirname $(readlink -f "$0"))/
66

7+
local i rm run=YES
8+
for i in "$@"
9+
do
10+
case $i in
11+
--rm)
12+
run=
13+
rm=YES
14+
shift
15+
;;
16+
17+
--restart)
18+
run=YES
19+
rm=YES
20+
shift
21+
;;
22+
23+
*)
24+
;;
25+
esac
26+
done
27+
28+
[[ -n "$rm" ]] && {
29+
printf "removing ...\n"
30+
31+
local images="dns proxy mail pma mysql"
32+
33+
docker stop $images 2>/dev/null
34+
docker rm $images 2>/dev/null
35+
docker network rm "$network" 2>/dev/null
36+
}
37+
38+
[[ -n "$run" ]] || {
39+
return 0
40+
}
41+
742
# chrome://flags/#allow-insecure-localhost
843

9-
docker network inspect ${network} > /dev/null 2>&1 || docker network create ${network} > /dev/null 2>&1
44+
docker network inspect "$network" > /dev/null 2>&1 || docker network create "$network" > /dev/null 2>&1
1045

11-
docker start dns 2>/dev/null || docker run -d --hostname dns --name dns --network ${network} \
46+
docker start dns 2>/dev/null || docker run -d --hostname dns --name dns --network "$network" \
47+
--label "traefik.enable=true" \
48+
--label "traefik.http.services.dns.loadbalancer.server.port=5380" \
49+
--label "traefik.http.routers.dns.service=dns" \
50+
--label "traefik.http.routers.dns.entrypoints=web" \
51+
--label "traefik.http.routers.dns.rule=Host(\`dns.localhost\`)" \
52+
--label "traefik.http.routers.dns.middlewares=redirect-https@docker" \
53+
--label "traefik.http.routers.dns-secure.entrypoints=web-secure" \
54+
--label "traefik.http.routers.dns-secure.rule=Host(\`dns.localhost\`)" \
55+
--label "traefik.http.routers.dns-secure.tls=true" \
56+
--env "MG_REGISTER_CONTAINER_NAMES=1" \
57+
--env "MG_DOMAIN=.localhost" \
58+
--env "MG_HOST_MACHINE_HOSTNAME=host.localhost" \
1259
--restart unless-stopped \
1360
-v /var/run/docker.sock:/var/run/docker.sock \
1461
-v /etc/resolv.conf:/etc/resolv.conf \
1562
xampp/dns
16-
echo https://dns.localhost
63+
echo http://dns.localhost
1764

18-
docker start proxy 2>/dev/null || docker run -d --hostname proxy --name proxy --network ${network} \
65+
docker start proxy 2>/dev/null || docker run -d --hostname .localhost --name proxy --network "$network" \
66+
--label "traefik.enable=true" \
67+
--label "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https" \
68+
--label "traefik.http.services.proxy.loadbalancer.server.port=8080" \
69+
--label "traefik.http.routers.proxy.service=proxy" \
70+
--label "traefik.http.routers.proxy.entrypoints=web" \
71+
--label "traefik.http.routers.proxy.rule=Host(\`proxy.localhost\`)" \
72+
--label "traefik.http.routers.proxy.middlewares=redirect-https@docker" \
73+
--label "traefik.http.routers.proxy-secure.entrypoints=web-secure" \
74+
--label "traefik.http.routers.proxy-secure.rule=Host(\`proxy.localhost\`)" \
75+
--label "traefik.http.routers.proxy-secure.tls=true" \
1976
--restart unless-stopped \
2077
-v /var/run/docker.sock:/var/run/docker.sock \
21-
-p 80:80 -p 443:443 \
22-
xampp/proxy
23-
echo https://proxy.localhost
78+
--expose 3000 \
79+
-p 80:80 -p 443:443 -p 3000:3000 \
80+
xampp/proxy \
81+
--api=true \
82+
--api.insecure=true \
83+
--log.level=info \
84+
--entrypoints.web-3000.address=:3000 \
85+
--entrypoints.web.address=:80 \
86+
--entrypoints.web-secure.address=:443 \
87+
--providers.docker=true \
88+
--providers.docker.network=local \
89+
--providers.docker.exposedByDefault=false
90+
echo http://proxy.localhost
2491

25-
docker start mail 2>/dev/null || docker run -d --hostname mail --name mail --network ${network} \
92+
docker start mail 2>/dev/null || docker run -d --hostname mail --name mail --network "$network" \
93+
--label "traefik.enable=true" \
94+
--label "traefik.http.services.mail.loadbalancer.server.port=8025" \
95+
--label "traefik.http.routers.mail.service=mail" \
96+
--label "traefik.http.routers.mail.entrypoints=web" \
97+
--label "traefik.http.routers.mail.rule=Host(\`mail.localhost\`)" \
98+
--label "traefik.http.routers.mail.middlewares=redirect-https@docker" \
99+
--label "traefik.http.routers.mail-secure.entrypoints=web-secure" \
100+
--label "traefik.http.routers.mail-secure.rule=Host(\`mail.localhost\`)" \
101+
--label "traefik.http.routers.mail-secure.tls=true" \
26102
--restart unless-stopped \
27103
xampp/mail
28-
echo https://mail.localhost
104+
echo http://mail.localhost
29105

30-
docker start pma 2>/dev/null || docker run -d --hostname pma --name pma --network ${network} \
106+
docker start pma 2>/dev/null || docker run -d --hostname pma --name pma --network "$network" \
107+
--label "traefik.enable=true" \
108+
--label "traefik.http.routers.pma.entrypoints=web" \
109+
--label "traefik.http.routers.pma.rule=Host(\`pma.localhost\`)" \
110+
--label "traefik.http.routers.pma.middlewares=redirect-https@docker" \
111+
--label "traefik.http.routers.pma-secure.entrypoints=web-secure" \
112+
--label "traefik.http.routers.pma-secure.rule=Host(\`pma.localhost\`)" \
113+
--label "traefik.http.routers.pma-secure.tls=true" \
114+
--env "PMA_ARBITRARY=1" \
31115
--restart unless-stopped \
32116
xampp/pma
33-
echo https://pma.localhost
34-
35-
docker start mysql 2>/dev/null || . ${base}/xampp-mysql "mysql"
36-
}
37-
38-
function down() {
39-
printf "xampp env down:\n"
40-
41-
local images="dns proxy mail pma mysql"
42-
local network=local
117+
echo http://pma.localhost
43118

44-
docker stop ${images} 2>/dev/null
45-
docker rm ${images} 2>/dev/null
46-
docker network rm ${network} 2>/dev/null
119+
docker start mysql 2>/dev/null || . "$base/xampp-mysql" mysql
47120
}
48121

49-
if [[ ${1} == 'down' ]]; then
50-
down
51-
else
52-
up
53-
fi;
122+
main "$@"

bin/xampp-up

Lines changed: 0 additions & 54 deletions
This file was deleted.

bin/xampp-up-dev

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/app:5.6.Dockerfile

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,18 @@
11
# docker build -t xampp/app:5.6 src -f src/app:5.6.Dockerfile
2-
# bin/xampp-up :5.6 --env DOCKER_XAMPP_BIN_ENV=dev
2+
# bin/xampp-up dev:5.6 --env DOCKER_XAMPP_BIN_ENV=dev
33

4-
FROM webdevops/php-apache-dev:debian-8
54
# Distributor ID: Debian
65
# Description: Debian GNU/Linux 8.11 (jessie)
76
# Release: 8.11
87
# Codename: jessie
9-
10-
LABEL traefik.enable=true
11-
LABEL traefik.docker.network=local
12-
13-
ENV DOCKER_XAMPP_BIN_ENV prod
8+
FROM webdevops/php-apache-dev:debian-8
149

1510
ENV APPLICATION_USER app
1611
ENV APPLICATION_GROUP app
1712

18-
ENV POSTFIX_RELAYHOST mail:1025
19-
ENV PHP_SENDMAIL_PATH /usr/sbin/sendmail -t -i
20-
ENV XDEBUG_CONFIG idekey=phpstorm
21-
ENV PHP_IDE_CONFIG serverName=app
22-
ENV COMPOSER_ALLOW_XDEBUG 1
23-
ENV XDEBUG_REMOTE_HOST 172.17.0.1
24-
ENV XDEBUG_PROFILER_ENABLE_TRIGGER 1
25-
ENV WEB_ALIAS_DOMAIN *.localhost
26-
ENV WEB_DOCUMENT_ROOT /app
27-
ENV php.session.gc_maxlifetime 864000
28-
ENV php.session.gc_divisor 1000
29-
ENV php.session.cache_expire 180
30-
3113
COPY opt/docker/ /opt/docker/
32-
3314
RUN set -x \
3415
&& docker-run-bootstrap \
3516
&& docker-image-cleanup
3617

37-
WORKDIR /app
38-
3918
USER ${APPLICATION_USER}:${APPLICATION_GROUP}

0 commit comments

Comments
 (0)