Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
services
t3o sites
extensions.typo3.org
extensions.typo3.org
Commits
7627e56a
Commit
7627e56a
authored
Nov 15, 2016
by
Sascha Marcel Schmidt
Browse files
adds script to wait for initial database setup
parent
35f951e1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
7627e56a
...
...
@@ -25,7 +25,7 @@ composer-install:
composer-update
:
$(COMPOSER)
--working-dir
=
data/typo3 up
install-typo3
:
up
@
read
-p
"Wait for https://ter.typo3.localhost to to become available. [Enter]"
$(DOCKER_COMPOSE)
run
--rm
php /src/data/scripts/wait-for-it.sh
-h
$(DATABASE_HOST_NAME)
-p
$(DATABASE_PORT)
-t
30
$(DOCKER_COMPOSE)
run
--rm
php ./bin/typo3cms
install
:setup
\
--non-interactive
\
--force
\
...
...
data/scripts/wait-for-it.sh
0 → 100755
View file @
7627e56a
#!/usr/bin/env bash
# Use this script to test if a given TCP host/port are available
cmdname
=
$(
basename
$0
)
echoerr
()
{
if
[[
$QUIET
-ne
1
]]
;
then
echo
"
$@
"
1>&2
;
fi
}
usage
()
{
cat
<<
USAGE
>&2
Usage:
$cmdname
host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit
1
}
wait_for
()
{
if
[[
$TIMEOUT
-gt
0
]]
;
then
echoerr
"
$cmdname
: waiting
$TIMEOUT
seconds for
$HOST
:
$PORT
"
else
echoerr
"
$cmdname
: waiting for
$HOST
:
$PORT
without a timeout"
fi
start_ts
=
$(
date
+%s
)
while
:
do
(
echo
>
/dev/tcp/
$HOST
/
$PORT
)
>
/dev/null 2>&1
result
=
$?
if
[[
$result
-eq
0
]]
;
then
end_ts
=
$(
date
+%s
)
echoerr
"
$cmdname
:
$HOST
:
$PORT
is available after
$((
end_ts
-
start_ts
))
seconds"
break
fi
sleep
1
done
return
$result
}
wait_for_wrapper
()
{
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
if
[[
$QUIET
-eq
1
]]
;
then
timeout
$TIMEOUT
$0
--quiet
--child
--host
=
$HOST
--port
=
$PORT
--timeout
=
$TIMEOUT
&
else
timeout
$TIMEOUT
$0
--child
--host
=
$HOST
--port
=
$PORT
--timeout
=
$TIMEOUT
&
fi
PID
=
$!
trap
"kill -INT -
$PID
"
INT
wait
$PID
RESULT
=
$?
if
[[
$RESULT
-ne
0
]]
;
then
echoerr
"
$cmdname
: timeout occurred after waiting
$TIMEOUT
seconds for
$HOST
:
$PORT
"
fi
return
$RESULT
}
# process arguments
while
[[
$#
-gt
0
]]
do
case
"
$1
"
in
*
:
*
)
hostport
=(
${
1
//
:/
}
)
HOST
=
${
hostport
[0]
}
PORT
=
${
hostport
[1]
}
shift
1
;;
--child
)
CHILD
=
1
shift
1
;;
-q
|
--quiet
)
QUIET
=
1
shift
1
;;
-s
|
--strict
)
STRICT
=
1
shift
1
;;
-h
)
HOST
=
"
$2
"
if
[[
$HOST
==
""
]]
;
then
break
;
fi
shift
2
;;
--host
=
*
)
HOST
=
"
${
1
#*=
}
"
shift
1
;;
-p
)
PORT
=
"
$2
"
if
[[
$PORT
==
""
]]
;
then
break
;
fi
shift
2
;;
--port
=
*
)
PORT
=
"
${
1
#*=
}
"
shift
1
;;
-t
)
TIMEOUT
=
"
$2
"
if
[[
$TIMEOUT
==
""
]]
;
then
break
;
fi
shift
2
;;
--timeout
=
*
)
TIMEOUT
=
"
${
1
#*=
}
"
shift
1
;;
--
)
shift
CLI
=
"
$@
"
break
;;
--help
)
usage
;;
*
)
echoerr
"Unknown argument:
$1
"
usage
;;
esac
done
if
[[
"
$HOST
"
==
""
||
"
$PORT
"
==
""
]]
;
then
echoerr
"Error: you need to provide a host and port to test."
usage
fi
TIMEOUT
=
${
TIMEOUT
:-
15
}
STRICT
=
${
STRICT
:-
0
}
CHILD
=
${
CHILD
:-
0
}
QUIET
=
${
QUIET
:-
0
}
if
[[
$CHILD
-gt
0
]]
;
then
wait_for
RESULT
=
$?
exit
$RESULT
else
if
[[
$TIMEOUT
-gt
0
]]
;
then
wait_for_wrapper
RESULT
=
$?
else
wait_for
RESULT
=
$?
fi
fi
if
[[
$CLI
!=
""
]]
;
then
if
[[
$RESULT
-ne
0
&&
$STRICT
-eq
1
]]
;
then
echoerr
"
$cmdname
: strict mode, refusing to execute subprocess"
exit
$RESULT
fi
exec
$CLI
else
exit
$RESULT
fi
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment