gpt4 book ai didi

caddy服务器的Docker镜像构建流程

转载 作者:撒哈拉 更新时间:2024-06-15 01:02:32 60 4
gpt4 key购买 nike

  。

构建一个包含 Caddy 服务器的 Docker 镜像,关键部分

  https://github.com/caddyserver/caddy-docker/blob/master/Dockerfile.tmpl 这个 Dockerfile 精心设计,用于自动化构建一个包含最新版 Caddy Web 服务器的 Docker 镜像,支持自动 HTTPS,并配置了基本的文件结构和执行环境.

  。

1. Trimming Whitespace

{{ .base | strings.TrimSpace }}

这一行使用了某种模板引擎(如Go的text/template)来处理字符串,移除.base变量值开头和结尾的空白字符.

  。

2. Installing Dependencies

RUN apk add --no-cache \
    ca-certificates \
    libcap \
    mailcap    

添加必要的 Alpine Linux 包作为 Caddy 服务器的依赖,包括 CA证书、libcap 以及 mailcap.

3 Creating Directories & Downloading Configuration and Welcome Page

RUN set -eux; \
    mkdir -p \
        /config/caddy \
        /data/caddy \
        /etc/caddy \
        /usr/share/caddy \
        ; \
    wget -O /etc/caddy/Caddyfile "https://github.com/caddyserver/dist/raw/{{ .config.dist_commit }}/config/Caddyfile"; \
    wget -O /usr/share/caddy/index.html "https://github.com/caddyserver/dist/raw/{{ .config.dist_commit }}/welcome/index.html"        

创建 Caddy 需要的多个目录结构,用于存放配置、数据、执行文件等.

使用 wget 命令从 GitHub 下载 Caddy 的默认配置文件 Caddyfile 和欢迎页面 index.html.

4. Setting Caddy Version Environment Variable

ENV CADDY_VERSION v{{ .config.caddy_version }}

设置环境变量 CADDY_VERSION 为指定版本的 Caddy 服务器.

5. Downloading and Installing Caddy Binary 。

RUN set -eux; \
    apkArch="$(apk --print-arch)"; \
    case "$apkArch" in \
        x86_64)  binArch='amd64'; checksum='{{ .checksums.amd64 }}' ;; \
        armhf)   binArch='armv6'; checksum='{{ .checksums.arm32v6 }}' ;; \
        armv7)   binArch='armv7'; checksum='{{ .checksums.arm32v7 }}' ;; \
        aarch64) binArch='arm64'; checksum='{{ .checksums.arm64v8 }}' ;; \
        ppc64el|ppc64le) binArch='ppc64le'; checksum='{{ .checksums.ppc64le }}' ;; \
        riscv64) binArch='riscv64'; checksum='{{ .checksums.riscv64 }}' ;; \
        s390x)   binArch='s390x'; checksum='{{ .checksums.s390x }}' ;; \
        *) echo >&2 "error: unsupported architecture ($apkArch)"; exit 1 ;;\
    esac; \
    wget -O /tmp/caddy.tar.gz "https://github.com/caddyserver/caddy/releases/download/v{{ .config.caddy_version }}/caddy_{{ .config.caddy_version }}_linux_${binArch}.tar.gz"; \
    echo "$checksum  /tmp/caddy.tar.gz" | sha512sum -c; \
    tar x -z -f /tmp/caddy.tar.gz -C /usr/bin caddy; \
    rm -f /tmp/caddy.tar.gz; \
    setcap cap_net_bind_service=+ep /usr/bin/caddy; \
    chmod +x /usr/bin/caddy; \
    caddy version

根据当前系统的架构动态选择 Caddy 的二进制文件进行下载,并通过 SHA512 校验和确保文件完整性。然后,解压并安装到 /usr/bin,设置适当的权限和功能(如网络绑定服务的能力).

  。

6 Environment Variables for File Locations

# See https://caddyserver.com/docs/conventions#file-locations for details
ENV XDG_CONFIG_HOME /config
ENV XDG_DATA_HOME /data

设置环境变量以指定 Caddy 的配置和数据存储位置.

7. Labels for Docker Image Metadata 。

LABEL org.opencontainers.image.version=v{{ .config.caddy_version }}
LABEL org.opencontainers.image.title=Caddy
LABEL org.opencontainers.image.description="a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go"
LABEL org.opencontainers.image.url=https://caddyserver.com
LABEL org.opencontainers.image.documentation=https://caddyserver.com/docs
LABEL org.opencontainers.image.vendor="Light Code Labs"
LABEL org.opencontainers.image.licenses=Apache-2.0
LABEL org.opencontainers.image.source="https://github.com/caddyserver/caddy-docker"

添加一系列标签来描述镜像的版本、标题、描述等元数据.

8. Exposing Ports 。

EXPOSE 80 443 443/udp 2019

声明容器运行时需要暴露的端口,包括HTTP(80)、HTTPS(443)、UDP上的HTTPS(443/udp)以及Caddy的监控端口(2019).

9. Working Directory and Default Command

WORKDIR /srv
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]

设置工作目录为`/srv`,并定义容器启动时执行的默认命令,即运行Caddy服务器,使用Caddyfile配置文件.

  。

  • 在线 IPFS 存储
  • 以太 ETH 单位转换器
  • 以太坊地址转换
  • 图片提取文字
  • JSON转QueryString

Link:https://www.cnblogs.com/farwish/p/18248452 。

最后此篇关于caddy服务器的Docker镜像构建流程的文章就讲到这里了,如果你想了解更多关于caddy服务器的Docker镜像构建流程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com