Add commands for managing proxy boot config. Since the proxy can be
shared by multiple applications, the configuration doesn't belong in
`config/deploy.yml`.
Instead you can set the config with:
```
Usage:
kamal proxy boot_config <set|get|clear>
Options:
[--publish], [--no-publish], [--skip-publish] # Publish the proxy ports on the host
# Default: true
[--http-port=N] # HTTP port to publish on the host
# Default: 80
[--https-port=N] # HTTPS port to publish on the host
# Default: 443
[--docker-options=option=value option2=value2] # Docker options to pass to the proxy container
```
By default we boot the proxy with `--publish 80:80 --publish 443:443`.
You can stop it from publishing ports, specify different ports and pass
other docker options.
The config is stored in `.kamal/proxy/options` as arguments to be passed
verbatim to docker run.
Where someone wants to set the options in their application they can do
that by calling `kamal proxy boot_config set` in a pre-deploy hook.
There's an example in the integration tests showing how to use this to
front kamal-proxy with Traefik, using an accessory.
37 lines
1.4 KiB
Docker
37 lines
1.4 KiB
Docker
FROM ruby:3.2
|
|
|
|
WORKDIR /
|
|
|
|
ENV VERBOSE=true
|
|
|
|
RUN apt-get update --fix-missing && apt-get install -y ca-certificates openssh-client curl gnupg docker.io
|
|
|
|
RUN install -m 0755 -d /etc/apt/keyrings
|
|
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
RUN chmod a+r /etc/apt/keyrings/docker.gpg
|
|
RUN echo \
|
|
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
|
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
|
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
RUN apt-get update --fix-missing && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
COPY *.sh .
|
|
COPY app/ app/
|
|
COPY app_with_roles/ app_with_roles/
|
|
COPY app_with_traefik/ app_with_traefik/
|
|
|
|
RUN rm -rf /root/.ssh
|
|
RUN ln -s /shared/ssh /root/.ssh
|
|
RUN mkdir -p /etc/docker/certs.d/registry:4443 && ln -s /shared/certs/domain.crt /etc/docker/certs.d/registry:4443/ca.crt
|
|
|
|
RUN git config --global user.email "deployer@example.com"
|
|
RUN git config --global user.name "Deployer"
|
|
RUN cd app && git init && git add . && git commit -am "Initial version"
|
|
RUN cd app_with_roles && git init && git add . && git commit -am "Initial version"
|
|
RUN cd app_with_traefik && git init && git add . && git commit -am "Initial version"
|
|
|
|
HEALTHCHECK --interval=1s CMD pgrep sleep
|
|
|
|
CMD ["./boot.sh"]
|