6 changed files with 278 additions and 2 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
FROM debian:stable-slim |
||||
|
||||
LABEL org.opencontainers.image.authors="ccyr@alwaysdata.net" |
||||
|
||||
RUN apt-get update && apt-get --assume-yes --no-install-recommends install libgmp10 libpcre2-dev unzip && rm -rf /var/lib/apt/lists/* && apt-get clean && apt-get autoclean |
||||
|
||||
COPY bin/*.sh /usr/local/bin |
||||
|
||||
RUN useradd --uid 2317 --home-dir /home/geneweb geneweb |
||||
|
||||
RUN mkdir -p /home/geneweb/bases /home/geneweb/import /home/geneweb/backup |
||||
|
||||
COPY geneweb-7.1.0-beta2-linux.zip / |
||||
|
||||
RUN chmod a+x /usr/local/bin/*.sh |
||||
|
||||
RUN unzip /geneweb-7.1.0-beta2-linux.zip -d /opt/ |
||||
|
||||
RUN chown -R geneweb:geneweb /home/geneweb |
||||
|
||||
VOLUME ["/home/geneweb"] |
||||
|
||||
ENV LANGAGE fr |
||||
|
||||
EXPOSE 2317 |
||||
|
||||
USER geneweb |
||||
|
||||
ENTRYPOINT ["main.sh"] |
||||
CMD ["start"] |
||||
@ -1,3 +1,33 @@
@@ -1,3 +1,33 @@
|
||||
# geneweb7_docker |
||||
# Docker image with geneweb7 image |
||||
|
||||
geneweb7 dans docker |
||||
## Build container |
||||
|
||||
```bash |
||||
docker buildx build --tag geneweb . |
||||
``` |
||||
|
||||
## Test |
||||
|
||||
```bash |
||||
docker run -it --rm --name gw geneweb:latest /bin/bash |
||||
``` |
||||
|
||||
## start container |
||||
|
||||
```bash |
||||
docker run -d --name geneweb -p 2317:2317 \ |
||||
-v /home/geneweb/bases:/home/geneweb/bases \ |
||||
geneweb:latest |
||||
``` |
||||
|
||||
## backup database |
||||
|
||||
```bash |
||||
docker exec -it geneweb backup.sh |
||||
``` |
||||
|
||||
## import database |
||||
|
||||
```bash |
||||
docker exec -it geneweb import.sh |
||||
``` |
||||
|
||||
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
/opt/gw/gwu /home/geneweb/bases/adrien.gwb -o /home/geneweb/backup/adrien_$(date +%Y%m%d_%H%M%S).gw |tee -a /home/geneweb/backup.log |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
#/opt/gw/gwc -bd /home/geneweb/bases -f -o adrien -f /home/geneweb/import/adrien.gw |tee -a /home/geneweb/import.log |
||||
|
||||
/opt/gw/gwc -bd /home/geneweb/bases -f -v -o adrien -ds "TODO" -f /home/geneweb/import/adrien.gw |tee -a /home/geneweb/import.log |
||||
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
function backup() |
||||
{ |
||||
backup.sh |
||||
} |
||||
|
||||
function import() |
||||
{ |
||||
import.sh |
||||
} |
||||
|
||||
function start() |
||||
{ |
||||
/opt/gw/gwd -lang fr -hd /opt/gw -bd /home/geneweb/bases -p 2317 -log /home/geneweb/geneweb.log |
||||
} |
||||
|
||||
case "$1" in |
||||
start) |
||||
start |
||||
;; |
||||
|
||||
backup) |
||||
backup |
||||
;; |
||||
|
||||
import) |
||||
import |
||||
;; |
||||
|
||||
*) |
||||
echo $"Usage: $0 {start|backup|import}" |
||||
exit 1 |
||||
|
||||
esac |
||||
@ -0,0 +1,173 @@
@@ -0,0 +1,173 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
set -e |
||||
|
||||
PROJECT_NAME=geneweb |
||||
PROJECT_RELEASE=7.1.0-beta2 |
||||
|
||||
WEB_PORT=2317 |
||||
DATA_HOME=/home/geneweb |
||||
LANGUAGE="fr" |
||||
HOST_IP="172.17.0.1" |
||||
TIME_ZONE="Europe/Paris" |
||||
|
||||
function containerName() |
||||
{ |
||||
echo "${PROJECT_NAME}_${PROJECT_RELEASE}" |
||||
} |
||||
|
||||
function usage() |
||||
{ |
||||
cat << EOF |
||||
|
||||
${0} |
||||
|
||||
Command options: |
||||
-h Display this help message. |
||||
-b Build the GeneWeb container |
||||
-r | -z Run the GeneWeb container | Build and run the GeneWeb Container |
||||
Option parameters: |
||||
-l The language to run GeneWeb in e.g. (en, de, fr) |
||||
-i The host ip address where the setup portal will be accessed from |
||||
-t The time zone to run GeneWeb in. e.g. (Australia/Melbourne) |
||||
-w The web portal port number. e.g. 2317 |
||||
-b The storage location for the bases e.g. ~/GenealogyData |
||||
-k Stop the container |
||||
-i Import database |
||||
-s Backup database |
||||
EOF |
||||
|
||||
exit 1 |
||||
} |
||||
|
||||
function displayRunning() |
||||
{ |
||||
cat << RUNNING |
||||
|
||||
GeneWeb is running using language '${LANGUAGE}' in the time zone '${TIME_ZONE}' |
||||
|
||||
The bases will be stored under '${DATA_HOME}' |
||||
|
||||
The web portal can be accessed at http://localhost:${WEB_PORT} |
||||
|
||||
To stop the GeneWeb container, execute: '${0} -k' |
||||
|
||||
RUNNING |
||||
} |
||||
|
||||
function checkoutRepo() |
||||
{ |
||||
find / -name "geneweb-7.1.0-beta2-linux.zip" -exec cp {} . \; |
||||
} |
||||
|
||||
function buildContainer() |
||||
{ |
||||
if grep -e "${PROJECT_NAME}:${PROJECT_RELEASE}" "$(docker image list)" 2> /dev/null |
||||
then |
||||
docker image rm ${PROJECT_NAME}:${PROJECT_RELEASE} |
||||
fi |
||||
echo "docker buildx build --tag geneweb:${PROJECT_RELEASE} ." |
||||
docker buildx build --tag geneweb:${PROJECT_RELEASE} . |
||||
} |
||||
|
||||
function import() |
||||
{ |
||||
docker cp ../genealogie/adrien.gw ${containerName}:/home/geneweb/import/ |
||||
docker exec -it $(containerName) import.sh |
||||
} |
||||
|
||||
function backup() |
||||
{ |
||||
docker exec -it $(containerName) backup.sh |
||||
} |
||||
|
||||
function runContainer() |
||||
{ |
||||
# Create the database directory |
||||
# mkdir -p ${DATA_HOME} |
||||
|
||||
# Remove any running/old containers |
||||
stopContainer && removeContainer |
||||
|
||||
# Run the container in detached mode |
||||
echo "docker run --detach --restart unless-stopped --publish ${WEB_PORT}:${WEB_PORT} --volume ${DATA_HOME}:${DATA_HOME} --env HOST_IP=${HOST_IP} --env LANGUAGE=${LANGUAGE} --env TZ=${TIME_ZONE} --name $(containerName) ${PROJECT_NAME}:${PROJECT_RELEASE}" |
||||
docker run --detach --restart unless-stopped --publish ${WEB_PORT}:${WEB_PORT} --volume ${DATA_HOME}:${DATA_HOME} --env HOST_IP=${HOST_IP} --env LANGUAGE=${LANGUAGE} --env TZ=${TIME_ZONE} --name $(containerName) ${PROJECT_NAME}:${PROJECT_RELEASE} |
||||
} |
||||
|
||||
function stopContainer() |
||||
{ |
||||
docker stop $(containerName) |
||||
} |
||||
|
||||
function removeContainer() |
||||
{ |
||||
set +e |
||||
docker rm $(containerName) 2>/dev/null |
||||
set -e |
||||
} |
||||
|
||||
function invalidOption() |
||||
{ |
||||
echo "Invalid Command: -$OPTARG" 1>&2 |
||||
} |
||||
|
||||
function invalidOptionParameter() |
||||
{ |
||||
echo "Invalid Option: -$OPTARG" 1>&2 |
||||
} |
||||
|
||||
function optionParameterRequiresValue() |
||||
{ |
||||
echo "Option: -$OPTARG requires an argument" 1>&2 |
||||
} |
||||
|
||||
while getopts ":hbrzkis" opt; do |
||||
case ${opt} in |
||||
|
||||
h ) usage ;; |
||||
|
||||
b ) buildContainer; exit $? ;; |
||||
|
||||
r | z ) |
||||
command=${opt} |
||||
while getopts ":l:t:i:w:b:" opt; do |
||||
case ${opt} in |
||||
l ) LANGUAGE=$OPTARG ;; |
||||
|
||||
t ) TIME_ZONE=$OPTARG ;; |
||||
|
||||
i ) HOST_IP=$OPTARG ;; |
||||
|
||||
w ) WEB_PORT=$OPTARG ;; |
||||
|
||||
b ) DATA_HOME=$OPTARG ;; |
||||
|
||||
\? ) invalidOptionParameter && usage ;; |
||||
|
||||
: ) optionParameterRequiresValue && usage ;; |
||||
esac |
||||
done |
||||
|
||||
if [[ "${command}" = "r" ]]; then |
||||
runContainer |
||||
else |
||||
buildContainer && runContainer |
||||
fi |
||||
|
||||
displayRunning; exit $? |
||||
;; |
||||
|
||||
k ) stopContainer; exit $? ;; |
||||
|
||||
i ) import ; exit $? ;; |
||||
|
||||
s) backup ; exit $? ;; |
||||
|
||||
\? ) invalidOption && usage ;; |
||||
|
||||
esac |
||||
done |
||||
|
||||
if [[ $OPTIND -eq 1 ]]; then |
||||
usage |
||||
fi |
||||
Loading…
Reference in new issue