본문 바로가기

카테고리 없음

[KTB-Final]nginx리버스 프록시 설정 prefix설정 다시..컨테이너 안에서

젠킨스 설정하는데 많이... 애르 먹었다. prefix설저하는데 제대로 안됐다.

 

 

젠킨스 컨테이너 환경에서는 

chmod +w /usr/local/bin/jenkins.sh
root@4fd25a96fe3c:/# nano /usr/local/bin/jenkins.sh

 

이 명령어로... 안에

if [[ "$DEBUG" ]] ; then
    java_opts_array+=( \
      '-Xdebug' \
      '-Xrunjdwp:server=y,transport=dt_socket,address=*:5005,suspend=y' \
    )
  fi

  # jenkins_opts_array에 프리픽스 옵션 추가
  jenkins_opts_array=( "--prefix=/jenkins" )  # 여기 추가

  while IFS= read -r -d '' item; do
    jenkins_opts_array+=( "$item" )
  done < <([[ $JENKINS_OPTS ]] && xargs printf '%s\0' <<<"$JENKINS_OPTS")

주석 써있는 부분을 추가해줬다.

 

근데 sh 코드에 뭔가 오류가 있는 것 같아서 지피티에게 물어보며 다시 했다. 

 

#! /bin/bash -e

: "${JENKINS_WAR:="/usr/share/jenkins/jenkins.war"}"
: "${JENKINS_HOME:="/var/jenkins_home"}"
: "${COPY_REFERENCE_FILE_LOG:="${JENKINS_HOME}/copy_reference_file.log"}"
: "${REF:="/usr/share/jenkins/ref"}"

if ! [ -r "${JENKINS_HOME}" ] || ! [ -w "${JENKINS_HOME}" ]; then
    echo "INSTALL WARNING: User: ${USER} missing rw permissions on JENKINS_HOME: ${JENKINS_HOME}"
fi
touch "${COPY_REFERENCE_FILE_LOG}" || { echo "Can not write to ${COPY_REFERENCE_FILE_LOG}. Wrong volume permissions?"; exit 1; }
echo "--- Copying files at $(date)" >> "$COPY_REFERENCE_FILE_LOG"
find "${REF}" \( -type f -o -type l \) -exec bash -c '. /usr/local/bin/jenkins-support; for arg; do copy_reference_file "$arg"; done' _ {} +
echo "--- Copied files finished at $(date)" >> "$COPY_REFERENCE_FILE_LOG"

# Prefix 설정 추가
export JENKINS_OPTS="--prefix=/jenkins"
jenkins_opts_array=()

# JENKINS_OPTS 설정을 jenkins_opts_array에 추가
while IFS= read -r -d '' item; do
    jenkins_opts_array+=( "$item" )
done < <([[ $JENKINS_OPTS ]] && xargs printf '%s\0' <<<"$JENKINS_OPTS")

# if `docker run` first argument start with `--` the user is passing jenkins launcher arguments
if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then

    # shellcheck disable=SC2001
    effective_java_opts=$(sed -e 's/^ $//' <<<"$JAVA_OPTS $JENKINS_JAVA_OPTS")

    # read JAVA_OPTS and JENKINS_OPTS into arrays to avoid need for eval (and associated vulnerabilities)
    java_opts_array=()
    while IFS= read -r -d '' item; do
        java_opts_array+=( "$item" )
    done < <([[ $effective_java_opts ]] && xargs printf '%s\0' <<<"$effective_java_opts")

    readonly agent_port_property='jenkins.model.Jenkins.slaveAgentPort'
    if [ -n "${JENKINS_SLAVE_AGENT_PORT:-}" ] && [[ "${effective_java_opts:-}" != *"${agent_port_property}"* ]]; then
        java_opts_array+=( "-D${agent_port_property}=${JENKINS_SLAVE_AGENT_PORT}" )
    fi

    readonly lifecycle_property='hudson.lifecycle'
    if [[ "${JAVA_OPTS:-}" != *"${lifecycle_property}"* ]]; then
        java_opts_array+=( "-D${lifecycle_property}=hudson.lifecycle.ExitLifecycle" )
    fi

    if [[ "$DEBUG" ]] ; then
        java_opts_array+=( \
          '-Xdebug' \
          '-Xrunjdwp:server=y,transport=dt_socket,address=*:5005,suspend=y' \
        )
    fi

    exec java -Duser.home="$JENKINS_HOME" "${java_opts_array[@]}" -jar "${JENKINS_WAR}" "${jenkins_opts_array[@]}" "$@"
fi

# As argument is not jenkins, assume user wants to run a different process, for example a `bash` shell to explore this image
exec "$@"

주의할 점은 root로 컨테이너 안에 들어가야한다는 것이다.

docker exec -it --user root 4fd25a96fe3c bash
root@4fd25a96fe3c:/# nano /usr/local/bin/jenkins.sh

이 명령어르 쳐서 jenkins.sh에 들어가 저 코드를 쳐주면 된다. #prefix 저 부분만 써주면 된다. 좀 찾기도 어렵고 엄청 헤맸다 이 부분에서ㅜㅜ 근데 prefix를 해야 들어가는 이유를 아직도 모르겠다. 

 

사실 아직도 왜 안되고 왜 되는지 모르겠다.