Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add Apache APISIX image #13099

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

soulbird
Copy link

@soulbird soulbird commented Sep 5, 2022

Hi there! This proposes a new official image for Apache APISIX, "a dynamic, real-time, high-performance API Gateway".

At present, the image of Apache APISIX is stored under the Apache organization, and we expect it to become the official image so that more people know and use it. At the same time, it also promotes the standardization of the apisix-docker repository, so that users have a better experience.

Checklist for Review

NOTE: This checklist is intended for the use of the Official Images maintainers both to track the status of your PR and to help inform you and others of where we're at. As such, please leave the "checking" of items to the repository maintainers. If there is a point below for which you would like to provide additional information or note completion, please do so by commenting on the PR. Thanks! (and thanks for staying patient with us ❤️)

  • associated with or contacted upstream?
  • available under an OSI-approved license?
  • does it fit into one of the common categories? ("service", "language stack", "base distribution")
  • is it reasonably popular, or does it solve a particular use case well?
    • More than 10k github stars.
  • does a documentation PR exist? (should be reviewed and merged at roughly the same time so that we don't have an empty image page on the Hub for very long)
  • official-images maintainer dockerization review for best practices and cache gotchas/improvements (ala the official review guidelines)?
  • 2+ official-images maintainer dockerization review?
  • existing official images have been considered as a base? (ie, if foobar needs Node.js, has FROM node:... instead of grabbing node via other means been considered?)
  • if FROM scratch, tarballs only exist in a single commit within the associated history?
  • passes current tests? any simple new tests that might be appropriate to add? (https://github.com/docker-library/official-images/tree/master/test)

Maintainers: Apache APISIX Docker Maintainers <[email protected]> (@soulbird)
GitRepo: https://github.com/apache/apisix-docker.git

Tags: 2.15.0, 2.15.0-debian, latest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2.15.0 doesn't exist

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the tag of the final target image, not the repository's tag.

@github-actions
Copy link

Diff for 08b240e:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index bdfae4a..13db37a 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1 +1,12 @@
-Maintainers: New Image! :D (@docker-library-bot)
+Maintainers: Apache APISIX Docker Maintainers <[email protected]> (@soulbird)
+GitRepo: https://github.com/apache/apisix-docker.git
+
+Tags: 2.15.0, 2.15.0-debian, latest
+Architectures: amd64, arm64v8
+GitCommit: 79e4c27f13a25a90292d5ca73f3848ae6d348ade
+Directory: debian
+
+Tags: 2.15.0-centos
+Architectures: amd64, arm64v8
+GitCommit: 79e4c27f13a25a90292d5ca73f3848ae6d348ade
+Directory: centos
diff --git a/_bashbrew-list b/_bashbrew-list
index e69de29..0235a6e 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -0,0 +1,4 @@
+apisix:2.15.0
+apisix:2.15.0-centos
+apisix:2.15.0-debian
+apisix:latest
diff --git a/apisix_2.15.0-centos/Dockerfile b/apisix_2.15.0-centos/Dockerfile
new file mode 100644
index 0000000..06879d5
--- /dev/null
+++ b/apisix_2.15.0-centos/Dockerfile
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM centos:7
+
+ARG APISIX_VERSION=2.15.0
+LABEL apisix_version="${APISIX_VERSION}"
+
+RUN yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm \
+	&& yum install -y apisix-${APISIX_VERSION} \
+	&& yum clean all \
+	&& sed -i 's/PASS_MAX_DAYS\t99999/PASS_MAX_DAYS\t60/g' /etc/login.defs
+
+WORKDIR /usr/local/apisix
+
+# forward request and error logs to docker log collector
+RUN ln -sf /dev/stdout /usr/local/apisix/logs/access.log \
+    && ln -sf /dev/stderr /usr/local/apisix/logs/error.log
+
+EXPOSE 9080 9443
+
+COPY ./docker-entrypoint.sh /docker-entrypoint.sh
+
+ENTRYPOINT ["/docker-entrypoint.sh"]
+
+CMD ["docker-start"]
+
+STOPSIGNAL SIGQUIT
diff --git a/apisix_2.15.0-centos/docker-entrypoint.sh b/apisix_2.15.0-centos/docker-entrypoint.sh
new file mode 100755
index 0000000..e6ad3f2
--- /dev/null
+++ b/apisix_2.15.0-centos/docker-entrypoint.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -eo pipefail
+
+PREFIX=${APISIX_PREFIX:=/usr/local/apisix}
+
+if [[ "$1" == "docker-start" ]]; then
+    if [ "$APISIX_STAND_ALONE" = "true" ]; then
+        cat > ${PREFIX}/conf/config.yaml << _EOC_
+apisix:
+  enable_admin: false
+  config_center: yaml
+_EOC_
+
+        cat > ${PREFIX}/conf/apisix.yaml << _EOC_
+routes:
+  -
+#END
+_EOC_
+        /usr/bin/apisix init
+    else
+        /usr/bin/apisix init
+        /usr/bin/apisix init_etcd
+    fi
+    
+    exec /usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon off;'
+fi
+
+exec "$@"
diff --git a/apisix_latest/Dockerfile b/apisix_latest/Dockerfile
new file mode 100644
index 0000000..d1dcd2c
--- /dev/null
+++ b/apisix_latest/Dockerfile
@@ -0,0 +1,62 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM debian:bullseye-slim
+
+ARG APISIX_VERSION=2.15.0
+
+RUN set -ex; \
+    arch=$(dpkg --print-architecture); \
+    apt update; \
+    apt-get -y install --no-install-recommends wget gnupg ca-certificates; \
+    codename=`grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release`; \
+    wget -O - https://openresty.org/package/pubkey.gpg | apt-key add -; \
+    case "${arch}" in \
+      amd64) \
+        echo "deb http://openresty.org/package/debian $codename openresty" | tee /etc/apt/sources.list.d/openresty.list \
+        && wget -O - http://repos.apiseven.com/pubkey.gpg | apt-key add - \
+        && echo "deb http://repos.apiseven.com/packages/debian $codename main" | tee /etc/apt/sources.list.d/apisix.list \
+        ;; \
+      arm64) \
+        echo "deb http://openresty.org/package/arm64/debian $codename openresty" | tee /etc/apt/sources.list.d/openresty.list \
+        && wget -O - http://repos.apiseven.com/pubkey.gpg | apt-key add - \
+        && echo "deb http://repos.apiseven.com/packages/arm64/debian $codename main" | tee /etc/apt/sources.list.d/apisix.list \
+        ;; \
+    esac; \
+    apt update \
+    && apt install -y apisix=${APISIX_VERSION}-0 \
+    && apt-get purge -y --auto-remove \
+    && rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/apisix.list \
+    && openresty -V \
+    && apisix version
+
+WORKDIR /usr/local/apisix
+
+# forward request and error logs to docker log collector
+RUN ln -sf /dev/stdout /usr/local/apisix/logs/access.log \
+    && ln -sf /dev/stderr /usr/local/apisix/logs/error.log
+
+EXPOSE 9080 9443
+
+COPY ./docker-entrypoint.sh /docker-entrypoint.sh
+
+ENTRYPOINT ["/docker-entrypoint.sh"]
+
+CMD ["docker-start"]
+
+
+STOPSIGNAL SIGQUIT
diff --git a/apisix_latest/docker-entrypoint.sh b/apisix_latest/docker-entrypoint.sh
new file mode 100755
index 0000000..e6ad3f2
--- /dev/null
+++ b/apisix_latest/docker-entrypoint.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -eo pipefail
+
+PREFIX=${APISIX_PREFIX:=/usr/local/apisix}
+
+if [[ "$1" == "docker-start" ]]; then
+    if [ "$APISIX_STAND_ALONE" = "true" ]; then
+        cat > ${PREFIX}/conf/config.yaml << _EOC_
+apisix:
+  enable_admin: false
+  config_center: yaml
+_EOC_
+
+        cat > ${PREFIX}/conf/apisix.yaml << _EOC_
+routes:
+  -
+#END
+_EOC_
+        /usr/bin/apisix init
+    else
+        /usr/bin/apisix init
+        /usr/bin/apisix init_etcd
+    fi
+    
+    exec /usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon off;'
+fi
+
+exec "$@"

@soulbird
Copy link
Author

Has been successfully built using bashbrew tools.

image

@tao12345666333
Copy link
Contributor

@tianon @yosifkit PTAL, thanks!

@yosifkit
Copy link
Member

Hello! ✨

Thanks for your interest in contributing to the official images program. 💭

As you may have noticed, we've usually got a pretty decently sized queue of new images (not to mention image updates and maintenance of images under @docker-library which are maintained by the core official images team). As such, it may be some time before we get to reviewing this image (image updates get priority both because users expect them and because reviewing new images is a more involved process than reviewing updates), so we apologize in advance! Please be patient with us -- rest assured, we've seen your PR and it's in the queue. ❤️

We do try to proactively add and update the "new image checklist" on each PR, so if you haven't looked at it yet, that's a good use of time while you wait. ☔

Thanks! 💖 💙 💚 ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants