Skip to content

Commit 887b9ed

Browse files
committed
Add 1.1.21.4 with GPG verification
1 parent c2b21f1 commit 887b9ed

File tree

4 files changed

+208
-1
lines changed

4 files changed

+208
-1
lines changed

1.1.21.4/Dockerfile

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
FROM alpine:3.22.0
2+
3+
ENV GEARMAND_VERSION=1.1.21
4+
5+
SHELL ["/bin/ash", "-euxo", "pipefail", "-c"]
6+
7+
RUN addgroup -S gearman && adduser -G gearman -S -D -H -s /bin/false -g "Gearman Server" gearman
8+
9+
COPY pubkey.asc /pubkey.asc
10+
11+
# Package list 'runDeps' is programmatically generated.
12+
# hadolint ignore=SC2086, DL3019
13+
RUN apk add --no-cache --virtual .build-deps \
14+
wget \
15+
tar \
16+
ca-certificates \
17+
file \
18+
alpine-sdk \
19+
gperf \
20+
libuuid \
21+
boost-dev \
22+
libevent-dev \
23+
util-linux-dev \
24+
hiredis-dev \
25+
mariadb-dev \
26+
libmemcached-dev \
27+
gnupg \
28+
&& wget -O gearmand.tar.gz -q "https://github.com/gearman/gearmand/releases/download/$GEARMAND_VERSION/gearmand-$GEARMAND_VERSION.tar.gz" \
29+
&& wget -O gearmand.tar.gz.asc -q "https://github.com/gearman/gearmand/releases/download/$GEARMAND_VERSION/gearmand-$GEARMAND_VERSION.tar.gz.asc" \
30+
&& gpg --import /pubkey.asc \
31+
&& gpg --verify gearmand.tar.gz.asc gearmand.tar.gz \
32+
&& mkdir -p /usr/src/gearmand \
33+
&& tar -xzf gearmand.tar.gz -C /usr/src/gearmand --strip-components=1 \
34+
&& rm gearmand.tar.gz gearmand.tar.gz.asc \
35+
&& cd /usr/src/gearmand \
36+
&& ./configure \
37+
--sysconfdir=/etc \
38+
--localstatedir=/var \
39+
--with-mysql=yes \
40+
--with-postgresql=no \
41+
--disable-libpq \
42+
--disable-libtokyocabinet \
43+
--disable-libdrizzle \
44+
--enable-ssl \
45+
--enable-hiredis \
46+
--enable-jobserver=no \
47+
&& make \
48+
&& make install \
49+
&& cd / && rm -rf /usr/src/gearmand \
50+
&& runDeps="$( \
51+
scanelf --needed --nobanner --recursive /usr/local \
52+
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
53+
| sort -u \
54+
| xargs -r apk info --installed || true \
55+
| sort -u \
56+
)" \
57+
&& apk add --virtual .gearmand-rundeps $runDeps \
58+
&& apk del .build-deps \
59+
&& /usr/local/sbin/gearmand --version
60+
61+
HEALTHCHECK --interval=5m --timeout=3s --retries=2 \
62+
CMD test $(netstat -ltn | grep -c :$GEARMAND_LISTEN_PORT) -eq 1 || exit 1
63+
64+
COPY docker-entrypoint.sh /usr/local/bin/
65+
RUN apk add --no-cache bash \
66+
&& touch /etc/gearmand.conf && chown gearman:gearman /etc/gearmand.conf \
67+
&& ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
68+
ENTRYPOINT ["docker-entrypoint.sh"]
69+
70+
USER gearman
71+
EXPOSE $GEARMAND_LISTEN_PORT
72+
CMD ["gearmand"]

1.1.21.4/docker-entrypoint.sh

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#!/bin/bash
2+
set -eo pipefail
3+
CONFIG_FILE='/etc/gearmand.conf'
4+
5+
VERBOSE=${VERBOSE:-INFO}
6+
QUEUE_TYPE=${QUEUE_TYPE:-builtin}
7+
8+
if [[ -n "$LISTEN_PORT" ]]; then
9+
export GEARMAND_PORT="$LISTEN_PORT"
10+
fi
11+
if [[ "$GEARMAND_PORT" =~ [^0-9] ]] ; then
12+
echo "WARNING: Ignoring invalid (non-numeric) value for GEARMAND_PORT: $GEARMAND_PORT"
13+
unset GEARMAND_PORT
14+
fi
15+
16+
THREADS=${THREADS:-4}
17+
BACKLOG=${BACKLOG:-32}
18+
FILE_DESCRIPTORS=${FILE_DESCRIPTORS:-0}
19+
20+
JOB_RETRIES=${JOB_RETRIES:-0}
21+
ROUND_ROBIN=${ROUND_ROBIN:-0}
22+
WORKER_WAKEUP=${WORKER_WAKEUP:-0}
23+
24+
KEEPALIVE=${KEEPALIVE:-0}
25+
KEEPALIVE_IDLE=${KEEPALIVE_IDLE:-30}
26+
KEEPALIVE_INTERVAL=${KEEPALIVE_INTERVAL:-10}
27+
KEEPALIVE_COUNT=${KEEPALIVE_COUNT:-5}
28+
29+
# usage: file_env VAR [DEFAULT]
30+
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
31+
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
32+
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
33+
file_env() {
34+
local var="$1"
35+
local fileVar="${var}_FILE"
36+
local def="${2:-}"
37+
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
38+
echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
39+
exit 1
40+
fi
41+
local val="$def"
42+
if [ "${!var:-}" ]; then
43+
val="${!var}"
44+
elif [ "${!fileVar:-}" ]; then
45+
val="$(< "${!fileVar}")"
46+
fi
47+
export "$var"="$val"
48+
unset "$fileVar"
49+
}
50+
51+
# first arg is `-f` or `--some-option`
52+
if [ "${1#-}" != "$1" ]; then
53+
set -- gearmand "$@"
54+
fi
55+
56+
function generate_config() {
57+
cat <<-__CONFIG_CONTENT__ > "${CONFIG_FILE}"
58+
--listen=0.0.0.0
59+
--log-file=stderr
60+
--verbose=${VERBOSE}
61+
--queue-type=${QUEUE_TYPE}
62+
--threads=${THREADS}
63+
--backlog=${BACKLOG}
64+
--job-retries=${JOB_RETRIES}
65+
--worker-wakeup=${WORKER_WAKEUP}
66+
__CONFIG_CONTENT__
67+
68+
if [[ "${FILE_DESCRIPTORS}" != '0' ]]; then
69+
cat <<-__CONFIG_CONTENT__ >> "${CONFIG_FILE}"
70+
--file-descriptors=${FILE_DESCRIPTORS}
71+
__CONFIG_CONTENT__
72+
fi
73+
74+
if [[ "${ROUND_ROBIN}" != '0' ]]; then
75+
cat <<-__CONFIG_CONTENT__ >> "${CONFIG_FILE}"
76+
--round-robin
77+
__CONFIG_CONTENT__
78+
fi
79+
80+
if [[ ${KEEPALIVE} != '0' ]]; then
81+
cat <<-__CONFIG_CONTENT__ >> "${CONFIG_FILE}"
82+
--keepalive
83+
--keepalive-idle=${KEEPALIVE_IDLE}
84+
--keepalive-interval=${KEEPALIVE_INTERVAL}
85+
--keepalive-count=${KEEPALIVE_COUNT}
86+
__CONFIG_CONTENT__
87+
fi
88+
89+
if [[ "$QUEUE_TYPE" == 'mysql' ]]; then
90+
file_env 'MYSQL_PASSWORD'
91+
cat <<-__CONFIG_CONTENT__ >> "${CONFIG_FILE}"
92+
--mysql-host=${MYSQL_HOST:-localhost}
93+
--mysql-port=${MYSQL_PORT:-3306}
94+
--mysql-user=${MYSQL_USER:-root}
95+
--mysql-password=${MYSQL_PASSWORD}
96+
--mysql-db=${MYSQL_DB:-Gearmand}
97+
--mysql-table=${MYSQL_TABLE:-gearman_queue}
98+
__CONFIG_CONTENT__
99+
fi
100+
}
101+
102+
if ! [ -s "${CONFIG_FILE}" ]; then # dont genarate config if current config file is not empty
103+
generate_config
104+
fi
105+
exec "$@"

1.1.21.4/pubkey.asc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
Version: GnuPG v1.4.10 (GNU/Linux)
3+
4+
mQENBEvqWBsBCADfEJbZj7Jx2omAQnl2IW6/l6z+6xRCQEWAOOuc6Z7KK4vp0d0G
5+
48WBz3JCKmm8n9eti59x8ep/Qep7+pGOqWDNZdkC1O82/zIpb/7oWlr5vM/pCj4i
6+
GoLgcxPg2bLnQgkkDrF2+ETldhqOzRPEN8YAwTCTBXD5Wik9Zz2S4kHYBFFWqhW5
7+
JCtQBhQEVnAmeybSc8hJWds8U6SfYfWRlmvRvHGHcrXzFeB9q9sy5E+WLWY/hbvK
8+
GFnz7vldmWb569+l9voP1omRvMFYdA2u5e+1r9LWu5HJUeW0Mr2hHgb1mH6SXqKk
9+
sqAXQdurNVwA5897H/Pse6I9ZKD8Sdcbf4TnABEBAAG0HkNsaW50IEJ5cnVtIDxj
10+
bGludEBmZXdiYXIuY29tPokBOAQTAQIAIgUCS+pYGwIbAwYLCQgHAwIGFQgCCQoL
11+
BBYCAwECHgECF4AACgkQU4wHZvS8s46ggwgAuFVftzjOJ+9AuDElnkFa/YHsIpTJ
12+
mg0hvu6xQuCesPuQ9xTTE+5rWECZGt+n9lvd/8GV25Xysy4wGLm2Sf1XVlSDrgcC
13+
oMqIKf+IMWrQkTwKyxfvflXLZWsVQw1qedKiZFjwYhNsquuaw32wrTSwVwG7CL0e
14+
MDjGAJ/xqpQqOoe58rn0+c1XqbRV0Ve8b6Ml3OO9mg/3NJEKa7y5lcE233yMCh0b
15+
/rRFbJKqIX8gahcKTY5kL1wNuVYN3moa5FJshrBIZKq2eDnfKzGkHUQ0eEGiEOjI
16+
eqpFc6aw3I78+ZXkgqX8RBrvBYIZZKhkYXlV/VUbhrMtJIIlrqVmJYYBLbkBDQRL
17+
6lgbAQgAvkygttKeRTJxFDEvVe9hHd/vgBJe1DBLCiBL79xy5KthfCG9q/2s6Jkg
18+
YwwDAzfHWYMMgjrn1DK1VSxsDPwGarO8xnZsS08MRyNJJ7f/9T26IJGxwwYq55Zt
19+
TZelMYIY9SLyyoqEHIVgv9vD2Gu5vAquwGfdhI/m4gQae0LPrwD6Ut5MG7NOJAOW
20+
Al3odRYdtO3B6lyzA7D0ELhQ8Yqe3MJ2CC7EBfW81M1vy0QD8tY6ifgZ2dXi5wyh
21+
fOF5oRCVDUVRh9x+LTKguLjL+Hvp/lFXxf2w0GOrajCtz1/uY96CT1vzKuzbW9UR
22+
q4ZlXr0eU3dieaGnDV30I2hPq2h6jQARAQABiQEfBBgBAgAJBQJL6lgbAhsMAAoJ
23+
EFOMB2b0vLOO4lwIAITvR4RYG1RHAr9BdKH8l/66rN16vLw+WWAtR0UgHjYvbIbr
24+
ZXCsCiuwqxni/4OoUrBOiNUGeR/LUEGkl3eBpV2y4s3YGr3pNEYGwy4cCT29LndM
25+
cCY4sVXHr99DuuTfZIPAIfP+FGs8NZm6cEyYVXieyNE1oz2K5GRRESC3H04RkhG5
26+
JVZNg70GK015mV3EEpF0INAbcFAEpAKnJTRvF5krCIA1wolFHIvvsCC+wpWaR/BT
27+
fQ4ajhJwtTBYQvok7JpSZr1hBwPCfBTS1K1qOLutJjXu+fv2YEcpfsHJIqm2IWf2
28+
UfBgbxRhtD9rc7oAYIF3cuhnRA+4eQUi+Jo8nsI=
29+
=d0MP
30+
-----END PGP PUBLIC KEY BLOCK-----

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
Only the following version is currently supported and maintained:
99

10-
- [`1.1.21.3-alpine`, `1.1.21.3`, `latest` (*Dockerfile*)](1.1.21.3/Dockerfile)
10+
- [`1.1.21.4-alpine`, `1.1.21.4`, `latest` (*Dockerfile*)](1.1.21.4/Dockerfile)
1111

1212
This image is built on version [1.1.21] of [gearmand].
1313

0 commit comments

Comments
 (0)