Added env file support

This commit is contained in:
2026-05-21 20:26:49 -05:00
parent 178987a0f1
commit a19a1f9a8e
4 changed files with 59 additions and 9 deletions

View File

@@ -6,27 +6,45 @@ TAG=""
PORT=""
INTERNAL_PORT="3000"
ENV=""
ENV_OVERRIDE=""
while [[ $# -gt 0 ]]; do
case $1 in
--name) APP_NAME="$2"; shift 2 ;;
--tag) TAG="$2"; shift 2 ;;
--port) PORT="$2"; shift 2 ;;
--internal-port) INTERNAL_PORT="$2"; shift 2 ;;
--env) ENV="$2"; shift 2 ;;
--name) APP_NAME="$2"; shift 2 ;;
--tag) TAG="$2"; shift 2 ;;
--port) PORT="$2"; shift 2 ;;
--internal-port) INTERNAL_PORT="$2";shift 2 ;;
--env) ENV="$2"; shift 2 ;;
--env-override) ENV_OVERRIDE="$2"; shift 2 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
done
CONTAINER="${APP_NAME}-${TAG}"
ON_DISK="/opt/apps/${APP_NAME}/.env.${ENV}"
echo "→ Deploying container: ${CONTAINER} on port ${PORT}"
docker stop "${CONTAINER}" 2>/dev/null && docker rm "${CONTAINER}" 2>/dev/null || true
ENV_FILE_ARG=""
if [[ -f "/opt/apps/${APP_NAME}/.env.${ENV}" ]]; then
ENV_FILE_ARG="--env-file /opt/apps/${APP_NAME}/.env.${ENV}"
HAS_ON_DISK=0
HAS_OVERRIDE=0
[[ -f "${ON_DISK}" ]] && HAS_ON_DISK=1
[[ -n "${ENV_OVERRIDE}" && -f "${ENV_OVERRIDE}" ]] && HAS_OVERRIDE=1
if (( HAS_ON_DISK == 1 && HAS_OVERRIDE == 0 )); then
ENV_FILE_ARG="--env-file ${ON_DISK}"
elif (( HAS_OVERRIDE == 1 && HAS_ON_DISK == 0 )); then
ENV_FILE_ARG="--env-file ${ENV_OVERRIDE}"
elif (( HAS_ON_DISK == 1 && HAS_OVERRIDE == 1 )); then
MERGED=$(mktemp)
# On-disk first, override second; tac/awk/tac keeps the last occurrence per key.
{ cat "${ON_DISK}"; echo; cat "${ENV_OVERRIDE}"; } \
| grep -Ev '^[[:space:]]*(#|$)' \
| tac | awk -F= '!seen[$1]++' | tac \
> "${MERGED}"
ENV_FILE_ARG="--env-file ${MERGED}"
fi
docker run -d \
@@ -38,4 +56,4 @@ docker run -d \
${ENV_FILE_ARG} \
"${APP_NAME}:${TAG}"
echo "✓ Container ${CONTAINER} running on 0.0.0.0:${PORT}"
echo "✓ Container ${CONTAINER} running on 0.0.0.0:${PORT}"