Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 37 additions & 1 deletion commands/env.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,46 @@ ${DOCKER_COMPOSE_COMMAND} \
--project-directory "${WARDEN_ENV_PATH}" -p "${WARDEN_ENV_NAME}" \
"${DOCKER_COMPOSE_ARGS[@]}" "${WARDEN_PARAMS[@]}" "$@"


if [[ "${WARDEN_PARAMS[0]}" == "stop" || "${WARDEN_PARAMS[0]}" == "down" || \
"${WARDEN_PARAMS[0]}" == "up" || "${WARDEN_PARAMS[0]}" == "start" ]]; then
regeneratePMAConfig

WARDEN_WEBSERVICE="nginx"
if [[ ${WARDEN_VARNISH} -eq 1 ]]; then
WARDEN_WEBSERVICE="varnish"
else
WARDEN_APACHE=${WARDEN_APACHE:-0}
if [[ ${WARDEN_APACHE} -eq 1 ]]; then
WARDEN_WEBSERVICE="apache"
else
WARDEN_WEBSERVICE="nginx"
fi
fi
echo "🧩 Generating dynamic Traefik config for environment: ${WARDEN_ENV_NAME}"

DYNAMIC_DIR="${WARDEN_HOME_DIR}/etc/traefik/dynamic"
DYNAMIC_FILE="${DYNAMIC_DIR}/${WARDEN_ENV_NAME}.yml"
mkdir -p "$DYNAMIC_DIR"

cat > "$DYNAMIC_FILE" <<-EOT
http:
routers:
${WARDEN_ENV_NAME}-${WARDEN_WEBSERVICE}:
rule: "HostRegexp(\`{subdomain:.+}.${WARDEN_ENV_NAME}.test\`) || Host(\`${WARDEN_ENV_NAME}.test\`)"
service: ${WARDEN_ENV_NAME}-${WARDEN_WEBSERVICE}
tls: {}
entryPoints:
- https
priority: 2

services:
${WARDEN_ENV_NAME}-${WARDEN_WEBSERVICE}:
loadBalancer:
servers:
- url: "http://${WARDEN_ENV_NAME}-${WARDEN_WEBSERVICE}:80"
EOT

echo "✅ Traefik dynamic config created: $DYNAMIC_FILE"
fi

## resume mutagen sync if available and php-fpm container id hasn't changed
Expand Down
18 changes: 16 additions & 2 deletions commands/svc.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,11 @@ if [[ "${WARDEN_PARAMS[0]}" == "up" ]]; then

## copy configuration files into location where they'll be mounted into containers from
mkdir -p "${WARDEN_HOME_DIR}/etc/traefik"
mkdir -p "${WARDEN_HOME_DIR}/etc/traefik/dynamic"
cp "${WARDEN_DIR}/config/traefik/traefik.yml" "${WARDEN_HOME_DIR}/etc/traefik/traefik.yml"

## generate dynamic traefik ssl termination configuration
cat > "${WARDEN_HOME_DIR}/etc/traefik/dynamic.yml" <<-EOT
cat > "${WARDEN_HOME_DIR}/etc/traefik/dynamic/tls.yml" <<-EOT
tls:
stores:
default:
Expand All @@ -91,12 +92,25 @@ if [[ "${WARDEN_PARAMS[0]}" == "up" ]]; then
EOT

for cert in $(find "${WARDEN_SSL_DIR}/certs" -type f -name "*.crt.pem" | sed -E 's#^.*/ssl/certs/(.*)\.crt\.pem$#\1#'); do
cat >> "${WARDEN_HOME_DIR}/etc/traefik/dynamic.yml" <<-EOF
cat >> "${WARDEN_HOME_DIR}/etc/traefik/dynamic/tls.yml" <<-EOF
- certFile: /etc/ssl/certs/warden/${cert}.crt.pem
keyFile: /etc/ssl/certs/warden/${cert}.key.pem
EOF
done

## generate dynamic traefik configuration for the traefik dashboard
cat > "${WARDEN_HOME_DIR}/etc/traefik/dynamic/traefik.yml" <<-'EOT'
http:
routers:
traefik:
rule: "Host(`traefik.warden.test`)"
service: api@internal
tls: {}
entryPoints:
- https
priority: 100
EOT

## always execute svc up using --detach mode
if ! (containsElement "-d" "$@" || containsElement "--detach" "$@"); then
WARDEN_PARAMS=("${WARDEN_PARAMS[@]:1}")
Expand Down
3 changes: 2 additions & 1 deletion config/traefik/traefik.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ api:
dashboard: true
providers:
file:
filename: /etc/traefik/dynamic.yml
directory: /etc/traefik/dynamic/
watch: true
docker:
network: warden
defaultRule: "Host(`{{ .Name }}.warden.test`)"
Expand Down
3 changes: 1 addition & 2 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ services:
- "${TRAEFIK_LISTEN:-127.0.0.1}:443:443" # The HTTPS port
volumes:
- ${WARDEN_HOME_DIR}/etc/traefik/traefik.yml:/etc/traefik/traefik.yml
- ${WARDEN_HOME_DIR}/etc/traefik/dynamic.yml:/etc/traefik/dynamic.yml
- ${WARDEN_HOME_DIR}/etc/traefik/dynamic:/etc/traefik/dynamic
- ${WARDEN_HOME_DIR}/ssl/certs:/etc/ssl/certs/warden
- /var/run/docker.sock:/var/run/docker.sock
labels:
- traefik.enable=true
- traefik.http.routers.traefik.tls=true
Expand Down