diff --git a/Dockerfile b/Dockerfile index e1d2ea8412a8a..350b20a226051 100644 --- a/Dockerfile +++ b/Dockerfile @@ -50,6 +50,7 @@ RUN addgroup \ ENV USER git ENV GITEA_CUSTOM /data/gitea +# See docker/etc/s6/gitea/default_env file for configurable env variable VOLUME ["/data"] diff --git a/docker/etc/profile.d/gitea.sh b/docker/etc/profile.d/gitea.sh deleted file mode 100755 index 41afd4cfb8444..0000000000000 --- a/docker/etc/profile.d/gitea.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -export GITEA_CUSTOM=/data/gitea diff --git a/docker/etc/s6/gitea/default_env b/docker/etc/s6/gitea/default_env new file mode 100755 index 0000000000000..3034a603643b1 --- /dev/null +++ b/docker/etc/s6/gitea/default_env @@ -0,0 +1,30 @@ +#!/bin/bash + +# Define the environment variables +export DATA_PATH=${DATA_PATH:-"/data/gitea"} +export GITEA_CUSTOM=${GITEA_CUSTOM:-"/data/gitea"} +export RUN_DIR=${RUN_DIR:-"/app/gitea"} + + +# Set INSTALL_LOCK to true only if SECRET_KEY is not empty and +# INSTALL_LOCK is empty +if [ -n "$SECRET_KEY" ] && [ -z "$INSTALL_LOCK" ]; then + INSTALL_LOCK=true +fi + +export APP_NAME=${APP_NAME:-"Gitea: Git with a cup of tea"} +export RUN_MODE=${RUN_MODE:-"dev"} +export SSH_DOMAIN=${SSH_DOMAIN:-"localhost"} +export HTTP_PORT=${HTTP_PORT:-"3000"} +export ROOT_URL=${ROOT_URL:-""} +export DISABLE_SSH=${DISABLE_SSH:-"false"} +export SSH_PORT=${SSH_PORT:-"22"} +export DB_TYPE=${DB_TYPE:-"sqlite3"} +export DB_HOST=${DB_HOST:-"localhost:3306"} +export DB_NAME=${DB_NAME:-"gitea"} +export DB_USER=${DB_USER:-"root"} +export DB_PASSWD=${DB_PASSWD:-""} +export INSTALL_LOCK=${INSTALL_LOCK:-"false"} +export DISABLE_REGISTRATION=${DISABLE_REGISTRATION:-"false"} +export REQUIRE_SIGNIN_VIEW=${REQUIRE_SIGNIN_VIEW:-"false"} +export SECRET_KEY=${SECRET_KEY:-""} \ No newline at end of file diff --git a/docker/etc/s6/gitea/run b/docker/etc/s6/gitea/run index da5fd6b535ef6..e54e3a5f239e0 100755 --- a/docker/etc/s6/gitea/run +++ b/docker/etc/s6/gitea/run @@ -1,6 +1,7 @@ #!/bin/bash +[[ -f ./default_env ]] && source ./default_env [[ -f ./setup ]] && source ./setup -pushd /app/gitea > /dev/null +pushd "${RUN_DIR}" > /dev/null exec su-exec $USER /app/gitea/gitea web popd diff --git a/docker/etc/s6/gitea/setup b/docker/etc/s6/gitea/setup index 2b0fb6c37bb36..85e25036fd2bf 100755 --- a/docker/etc/s6/gitea/setup +++ b/docker/etc/s6/gitea/setup @@ -6,41 +6,20 @@ if [ ! -d /data/git/.ssh ]; then fi if [ ! -f /data/git/.ssh/environment ]; then - echo "GITEA_CUSTOM=/data/gitea" >| /data/git/.ssh/environment + echo "GITEA_CUSTOM=${GITEA_CUSTOM}" >| /data/git/.ssh/environment chmod 600 /data/git/.ssh/environment fi -if [ ! -f /data/gitea/conf/app.ini ]; then - mkdir -p /data/gitea/conf - - # Set INSTALL_LOCK to true only if SECRET_KEY is not empty and - # INSTALL_LOCK is empty - if [ -n "$SECRET_KEY" ] && [ -z "$INSTALL_LOCK" ]; then - INSTALL_LOCK=true - fi +if [ ! -f "${GITEA_CUSTOM}/conf/app.ini" ]; then + mkdir -p "${GITEA_CUSTOM}/conf" # Substitude the environment variables in the template - APP_NAME=${APP_NAME:-"Gitea: Git with a cup of tea"} \ - RUN_MODE=${RUN_MODE:-"dev"} \ - SSH_DOMAIN=${SSH_DOMAIN:-"localhost"} \ - HTTP_PORT=${HTTP_PORT:-"3000"} \ - ROOT_URL=${ROOT_URL:-""} \ - DISABLE_SSH=${DISABLE_SSH:-"false"} \ - SSH_PORT=${SSH_PORT:-"22"} \ - DB_TYPE=${DB_TYPE:-"sqlite3"} \ - DB_HOST=${DB_HOST:-"localhost:3306"} \ - DB_NAME=${DB_NAME:-"gitea"} \ - DB_USER=${DB_USER:-"root"} \ - DB_PASSWD=${DB_PASSWD:-""} \ - INSTALL_LOCK=${INSTALL_LOCK:-"false"} \ - DISABLE_REGISTRATION=${DISABLE_REGISTRATION:-"false"} \ - REQUIRE_SIGNIN_VIEW=${REQUIRE_SIGNIN_VIEW:-"false"} \ - SECRET_KEY=${SECRET_KEY:-""} \ - envsubst < /etc/templates/app.ini > /data/gitea/conf/app.ini + envsubst < /etc/templates/app.ini > "${GITEA_CUSTOM}/conf/app.ini" fi # only chown if current owner is not already the gitea ${USER}. No recursive check to save time -if ! [[ $(ls -ld /data/gitea | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git /data/gitea; fi -if ! [[ $(ls -ld /app/gitea | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git /app/gitea; fi +if ! [[ $(ls -ld "${GITEA_CUSTOM}" | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git "${GITEA_CUSTOM}"; fi +if ! [[ $(ls -ld "${DATA_PATH}" | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git "${DATA_PATH}"; fi +if ! [[ $(ls -ld "${RUN_DIR}" | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git "${RUN_DIR}"; fi if ! [[ $(ls -ld /data/git | awk '{print $3}') = ${USER} ]]; then chown -R ${USER}:git /data/git; fi -chmod 0755 /data/gitea /app/gitea /data/git +chmod 0755 "${GITEA_CUSTOM}" "${DATA_PATH}" "${RUN_DIR}" /data/git diff --git a/docker/etc/templates/app.ini b/docker/etc/templates/app.ini index 589271b4a0e41..451322e8cb85c 100644 --- a/docker/etc/templates/app.ini +++ b/docker/etc/templates/app.ini @@ -5,13 +5,13 @@ RUN_MODE = $RUN_MODE ROOT = /data/git/repositories [repository.local] -LOCAL_COPY_PATH = /data/gitea/tmp/local-repo +LOCAL_COPY_PATH = $DATA_PATH/tmp/local-repo [repository.upload] -TEMP_PATH = /data/gitea/uploads +TEMP_PATH = $DATA_PATH/uploads [server] -APP_DATA_PATH = /data/gitea +APP_DATA_PATH = $DATA_PATH SSH_DOMAIN = $SSH_DOMAIN HTTP_PORT = $HTTP_PORT ROOT_URL = $ROOT_URL @@ -20,7 +20,7 @@ SSH_PORT = $SSH_PORT LFS_CONTENT_PATH = /data/git/lfs [database] -PATH = /data/gitea/gitea.db +PATH = $DATA_PATH/gitea.db DB_TYPE = $DB_TYPE HOST = $DB_HOST NAME = $DB_NAME @@ -28,19 +28,19 @@ USER = $DB_USER PASSWD = $DB_PASSWD [indexer] -ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve +ISSUE_INDEXER_PATH = $DATA_PATH/indexers/issues.bleve [session] -PROVIDER_CONFIG = /data/gitea/sessions +PROVIDER_CONFIG = $DATA_PATH/sessions [picture] -AVATAR_UPLOAD_PATH = /data/gitea/avatars +AVATAR_UPLOAD_PATH = $DATA_PATH/avatars [attachment] -PATH = /data/gitea/attachments +PATH = $DATA_PATH/attachments [log] -ROOT_PATH = /data/gitea/log +ROOT_PATH = $DATA_PATH/log [security] INSTALL_LOCK = $INSTALL_LOCK diff --git a/docker/usr/bin/entrypoint b/docker/usr/bin/entrypoint index d8e68b9404d63..29466d2cc0f26 100755 --- a/docker/usr/bin/entrypoint +++ b/docker/usr/bin/entrypoint @@ -26,7 +26,7 @@ if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd fi -for FOLDER in /data/gitea/conf /data/gitea/log /data/git /data/ssh; do +for FOLDER in "${GITEA_CUSTOM}/conf" "${DATA_PATH}/log" /data/git /data/ssh; do mkdir -p ${FOLDER} done