fix: start.sh가 CRLF로 된 env 파일도 견디게 함
서버에서 itnhub.env를 Windows에서 만들어 올리면 source 할 때 줄 끝 캐리지 리턴이 값에 그대로 붙는다. DB 비밀번호나 SERVER_PORT가 조용히 틀어지고 빈 줄에서는 command not found 가 뜬다. 캐리지 리턴을 걷어낸 사본을 만들어 읽도록 바꾼다. 원본 파일은 그대로 둔다. alpine에서 bash -n, shellcheck, CRLF env 주입까지 확인했다. Co-Authored-By: Claude Opus 5 (1M context)
@78aca880a88aab2631f6066703cbb03fb3c38cbb
--- deploy/start.sh
+++ deploy/start.sh
... | ... | @@ -28,10 +28,18 @@ |
| 28 | 28 |
exit 1 |
| 29 | 29 |
fi |
| 30 | 30 |
|
| 31 |
+# env 파일을 Windows에서 만들었다면 줄 끝에 캐리지 리턴(0x0D)이 남는다. 그대로 source 하면 |
|
| 32 |
+# 값 끝에 그 문자가 붙어 DB 인증 실패나 포트 파싱 오류가 나고, 빈 줄에서는 |
|
| 33 |
+# "command not found" 가 뜬다. 그래서 캐리지 리턴을 걷어낸 사본을 만들어 읽는다. |
|
| 34 |
+# 원본 파일은 건드리지 않는다. |
|
| 35 |
+ENV_TMP=$(mktemp) |
|
| 36 |
+trap 'rm -f "$ENV_TMP"' EXIT |
|
| 37 |
+tr -d '\015' < "$ENV_FILE" > "$ENV_TMP" |
|
| 38 |
+ |
|
| 31 | 39 |
# set -a 를 켜면 이후 대입되는 변수가 모두 export 된다(파일에 export를 안 써도 된다). |
| 32 | 40 |
set -a |
| 33 | 41 |
# shellcheck disable=SC1090 |
| 34 |
-. "$ENV_FILE" |
|
| 42 |
+. "$ENV_TMP" |
|
| 35 | 43 |
set +a |
| 36 | 44 |
|
| 37 | 45 |
# 필수 8개가 비어 있으면 기동 도중에 죽으므로 여기서 먼저 걸러낸다. |
... | ... | @@ -60,6 +68,7 @@ |
| 60 | 68 |
mkdir -p "$LOG_FILE_PATH" |
| 61 | 69 |
|
| 62 | 70 |
# ── 기동 ───────────────────────────────────────────────────────────── |
| 71 |
+# shellcheck disable=SC2086 # JAVA_OPTS는 여러 옵션이라 일부러 분리되게 둔다. |
|
| 63 | 72 |
nohup "$JAVA_HOME_BIN/java" $JAVA_OPTS -jar "$DEPLOY_PATH/$FILE_NM" \ |
| 64 | 73 |
>> "$LOG_FILE_PATH/$LOG_FILE_NM" 2>&1 & |
| 65 | 74 |
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?