diff --git a/traefik/2.11.0/22.03-lts-sp3/Dockerfile b/traefik/2.11.0/22.03-lts-sp3/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ff6c4c87924cfef2b49679b6620ab42e8d978bee --- /dev/null +++ b/traefik/2.11.0/22.03-lts-sp3/Dockerfile @@ -0,0 +1,19 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp3 +FROM ${BASE} + +ARG TARGETARCH +ARG VERSION=2.11.0 + +RUN yum -y update && \ + yum -y install wget && \ + yum clean all + +RUN wget -O /tmp/traefik.tar.gz https://github.com/traefik/traefik/releases/download/v${VERSION}/traefik_v${VERSION}_linux_${TARGETARCH}.tar.gz && \ + tar -zxvf /tmp/traefik.tar.gz -C /usr/bin traefik && \ + chmod +x /usr/bin/traefik && \ + rm -rf /tmp/traefik.tar.gz + +COPY entrypoint.sh / +EXPOSE 80 +ENTRYPOINT ["/entrypoint.sh"] +CMD ["traefik"] diff --git a/traefik/2.11.0/22.03-lts-sp3/entrypoint.sh b/traefik/2.11.0/22.03-lts-sp3/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..663073dc9759941e9645786905c87d9c7ce1c7d1 --- /dev/null +++ b/traefik/2.11.0/22.03-lts-sp3/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- traefik "$@" +fi + +# if our command is a valid Traefik subcommand, let's invoke it through Traefik instead +# (this allows for "docker run traefik version", etc) +if traefik "$1" --help >/dev/null 2>&1 +then + set -- traefik "$@" +else + echo "= '$1' is not a Traefik command: assuming shell execution." 1>&2 +fi + +exec "$@" \ No newline at end of file diff --git a/traefik/README.md b/traefik/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3ae34cb178bf6bbdb4a1fe4ecfd5f6aaafaa13ad --- /dev/null +++ b/traefik/README.md @@ -0,0 +1,33 @@ +# Traefik + +# Quick reference + +- The official Traefik docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/traefik:$TAG" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +2. Run: +```shell +docker run -d -p 8080:8080 -p 80:80 \ + -v $PWD/traefik.yml:/etc/traefik/traefik.yml \ + -v /var/run/docker.sock:/var/run/docker.sock \ + openeuler/traefik:{TAG} +``` + +# Supported tags and respective Dockerfile links + +- 2.11.0-oe2203sp3: traefik v2.11.0, openEuler 22.03-LTS-SP3 + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/traefik/doc/image-info.yml b/traefik/doc/image-info.yml new file mode 100644 index 0000000000000000000000000000000000000000..a2dfc1593226783c44603afa87ce27bf2ec80d2a --- /dev/null +++ b/traefik/doc/image-info.yml @@ -0,0 +1,103 @@ +name: traefik +category: cloud +description: Traefik(发音和traffic相同,采用Golang编写)是一个云原生的新型的HTTP反向代理、负载均衡软件。Traefik负责接收系统的请求,然后使用合适的组件来对这些请求进行处理。Traefik兼容所有主流的集群技术,比如Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon等。 +environment: " + 本应用以容器镜像的方式供用户使用,运行于预置docker的Linux环境。Docker的推荐安装方式如下: + ## apt安装 + ### 1.更新系统软件包依赖 + ``` + sudo spt update + sudo apt install ca-certificates curl gnupg lsb-release + ``` + ### 2.添加Docker官方GPG密钥 + ``` + sudo mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + sudo chmod a+r /etc/apt/keyrings/docker.gpg + ``` + ### 3.添加Docker官方APT源 + ``` + echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + ``` + ### 4.再次更新软件包索引 + ``` + sudo apt update + ``` + ### 5.安装Docker + ``` + sudo apt install docker-ce docker-ce-cli containerd.io + ``` + + ## yum安装 + ### 1.安装yum-utils + ``` + sudo yum install -y yum-utils + ``` + ### 2.添加Docker源 + ``` + sudo yum-config-manager \ + > --add-repo \ + > https://download.docker.com/linux/centos/docker-ce.repo + ``` + ### 3.安装Docker + ``` + sudo yum install -y docker-ce docker-ce-cli containerd.io + ``` + + 注意,在openEuler环境安装docker时,可执行如下命令一键安装 + ``` + yum install -y docker + ``` + + ## 脚本安装 + ### 1.下载安装脚本 + ``` + curl -fsSL https://get.docker.com -o get-docker.sh + ``` + ### 2.使用root权限执行脚本 + ``` + sudo sh get-docker.sh + ``` + 使用脚本安装方式时,如果用户要指定安装的docker版本,需要自行修改`get-docker.sh`的源码内容。 + + ## 验证 + ``` + sudo docker run hello-world + ``` + " +download: " + 获取容器镜像 + ``` + docker pull openeuler/traefik:{TAG} + ``` + " +install: " + ## 1. 使能docker和web UI + ``` + ## traefik.yml + + # Docker configuration backend + providers: + docker: + defaultRule: \"Host(`{{ trimPrefix `/` .Name }}.docker.localhost`)\" + # API and dashboard configuration + api: + insecure: true + ``` + ## 2. 启动容器 + ``` + docker run -d -p 8080:8080 -p 80:80 \ + -v $PWD/traefik.yml:/etc/traefik/traefik.yml \ + -v /var/run/docker.sock:/var/run/docker.sock \ + openeuler/traefik:{TAG} + ``` + 用户可根据自身需求,自定义启动选项。 + " +license: MIT license +similar_packages: + - Nginx: Nginx是一款高性能的反向代理和Web服务器软件。它支持负载均衡、SSL/TLS 终止、缓存和许多其他功能。与Traefik类似,Nginx也可以用于容器化环境中。 + - HAProxy: HAProxy是一款高可用性的TCP/HTTP反向代理和负载均衡软件。它具有高性能和可靠性,并支持动态配置和健康检查。 + - Envoy: Envoy是一个开源的边缘和服务代理,具有动态配置、负载均衡、故障恢复和流量监控等功能。它被广泛用于云原生环境和微服务架构中。 + - Caddy: Caddy是一款现代化的Web服务器和反向代理软件,具有自动HTTPS、自动HTTP/2和易于使用的配置功能。它支持动态代理和负载均衡,并适用于容器化环境。 +dependency: + - N/A \ No newline at end of file diff --git a/traefik/doc/picture/logo.png b/traefik/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4778d0f5bedb0c41247dd369162c09d6638071e4 Binary files /dev/null and b/traefik/doc/picture/logo.png differ diff --git a/traefik/meta.yml b/traefik/meta.yml new file mode 100644 index 0000000000000000000000000000000000000000..f306dbd3771ab96fcd0867fbac3e3cf35f1fb1b8 --- /dev/null +++ b/traefik/meta.yml @@ -0,0 +1,2 @@ +2.11.0-oe2203sp3: + - traefik/2.11.0/22.03-lts-sp3/Dockerfile \ No newline at end of file