This is an automated email from the ASF dual-hosted git repository.

monkeydluffy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-docker.git


The following commit(s) were added to refs/heads/master by this push:
     new 0624a79  feat: revert remove apisix-dashboard (#516) (#522)
0624a79 is described below

commit 0624a793c95c9a96ce6b7f31ed50f18ed1a0d494
Author: Sn0rt <[email protected]>
AuthorDate: Thu Dec 7 09:12:27 2023 +0800

    feat: revert remove apisix-dashboard (#516) (#522)
---
 .../workflows/apisix_dev_docker_local_test.yaml    |   8 +-
 .github/workflows/dashboard_all_in_one_ci.yaml     |  27 ++++
 .github/workflows/dashboard_push_docker_hub.yaml   |  56 ++++++++
 Makefile                                           |  31 +++++
 all-in-one/apisix-dashboard/Dockerfile             | 144 +++++++++++++++++++++
 all-in-one/apisix-dashboard/conf.yaml              |  51 ++++++++
 compose/dashboard-compose.yaml                     |  52 ++++++++
 dashboard/Dockerfile.alpine                        |  71 ++++++++++
 dashboard/README.md                                |   7 +
 debian-dev/Dockerfile                              |   8 +-
 debian-dev/Dockerfile.local                        |  40 ++++--
 debian-dev/docker-entrypoint.sh                    |   4 +-
 12 files changed, 477 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/apisix_dev_docker_local_test.yaml 
b/.github/workflows/apisix_dev_docker_local_test.yaml
index e8974c3..0a488b5 100644
--- a/.github/workflows/apisix_dev_docker_local_test.yaml
+++ b/.github/workflows/apisix_dev_docker_local_test.yaml
@@ -36,15 +36,17 @@ jobs:
 
       - name: Build image
         run: |
-          cd apisix
           tag="apache/apisix:$APISIX_IMAGE_TAG"
-          docker build -t $tag -f ../debian-dev/Dockerfile.local  .
-          
+          docker build -t $tag -f debian-dev/Dockerfile.local  .
+
       - name: use docker-compose
         run: docker-compose -p docker-apisix -f example/docker-compose.yml up 
-d
 
       - name: Test APISIX
         run: |
+          sleep 2
+          docker logs docker-apisix_apisix_1
+
           sleep 30
 
           curl http://127.0.0.1:9180/apisix/admin/routes/1 \
diff --git a/.github/workflows/dashboard_all_in_one_ci.yaml 
b/.github/workflows/dashboard_all_in_one_ci.yaml
new file mode 100644
index 0000000..c7552eb
--- /dev/null
+++ b/.github/workflows/dashboard_all_in_one_ci.yaml
@@ -0,0 +1,27 @@
+name: apisix dashboard all in one docker
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+
+    env:
+      APISIX_DASHBOARD_VERSION: "3.0.1" # in semver
+    
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Build and Test
+        run: |
+          docker build -t apache/apisix-dashboard:whole --build-arg 
APISIX_DASHBOARD_TAG=v${APISIX_DASHBOARD_VERSION} -f 
./all-in-one/apisix-dashboard/Dockerfile .
+          docker run -v 
`pwd`/all-in-one/apisix/config.yaml:/usr/local/apisix/conf/config.yaml -v 
`pwd`/all-in-one/apisix-dashboard/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml
 -p 9080:9080 -p 2379:2379 -p 9000:9000 -d apache/apisix-dashboard:whole
+          sleep 30
+          curl http://127.0.0.1:9080/apisix/admin/schema/service -H 
'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
+          curl http://127.0.0.1:9000
diff --git a/.github/workflows/dashboard_push_docker_hub.yaml 
b/.github/workflows/dashboard_push_docker_hub.yaml
new file mode 100644
index 0000000..e1b9296
--- /dev/null
+++ b/.github/workflows/dashboard_push_docker_hub.yaml
@@ -0,0 +1,56 @@
+name: Push apisix dashboard to Docker image
+on:
+  push:
+    branches: ['release/apisix-dashboard**']
+jobs:
+  build:
+    strategy:
+      fail-fast: false
+      matrix:
+        os:
+          - alpine
+
+    name: build dashboard & test on ${{ matrix.os }} && push to docker hub
+    runs-on: ubuntu-latest
+
+    env:
+      APISIX_DASHBOARD_VERSION: "3.0.1" # in semver
+
+    steps:
+      - name: Check out the repo
+        uses: actions/checkout@v2
+
+      - name: Build and run
+        run: |
+          make build-dashboard-${{ matrix.os }}
+          docker-compose -f ./compose/dashboard-compose.yaml up -d
+          sleep 30
+          docker logs compose_dashboard_1
+
+      - name: check
+        run: |
+          wget 
https://raw.githubusercontent.com/apache/apisix-dashboard/master/api/test/shell/manager_smoking.sh
+          chmod +x ./manager_smoking.sh
+          sh manager_smoking.sh -s true
+
+      - name: Tar Image
+        run: |
+          make save-dashboard-${{ matrix.os }}-tar
+
+      - name: Upload Image
+        uses: actions/upload-artifact@v2
+        with:
+          path: ./package
+
+      - name: Login to Docker Hub
+        uses: docker/login-action@v1
+        with:
+          username: ${{ secrets.DOCKERHUB_USER }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v1
+        
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v1
+
diff --git a/Makefile b/Makefile
index 0804291..c3de388 100644
--- a/Makefile
+++ b/Makefile
@@ -26,6 +26,10 @@ MAX_APISIX_VERSION ?= 3.7.0
 IMAGE_NAME = apache/apisix
 IMAGE_TAR_NAME = apache_apisix
 
+APISIX_DASHBOARD_VERSION ?= $(shell echo ${APISIX_DASHBOARD_VERSION:=3.0.1})
+APISIX_DASHBOARD_IMAGE_NAME = apache/apisix-dashboard
+APISIX_DASHBOARD_IMAGE_TAR_NAME = apache_apisix_dashboard
+
 
 # Makefile ENV
 ENV_OS_NAME                ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
@@ -136,6 +140,14 @@ build-all-in-one:
        @$(call func_echo_success_status, "$@ -> [ Done ]")
 
 
+### build-dashboard-all-in-one : Build All in one Docker container for Apache 
APISIX-dashboard
+.PHONY: build-dashboard-all-in-one
+build-dashboard-all-in-one:
+       @$(call func_echo_status, "$@ -> [ Start ]")
+       $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):whole -f 
./all-in-one/apisix-dashboard/Dockerfile .
+       @$(call func_echo_success_status, "$@ -> [ Done ]")
+
+
 ### save-debian-tar : tar apache/apisix:xx-debian image
 .PHONY: save-debian-tar
 save-debian-tar:
@@ -145,6 +157,25 @@ save-debian-tar:
        @$(call func_echo_success_status, "$@ -> [ Done ]")
 
 
+### build-dashboard-alpine : Build apache/dashboard:tag image on alpine
+.PHONY: build-dashboard-alpine
+build-dashboard-alpine:
+       @$(call func_echo_status, "$@ -> [ Start ]")
+       $(ENV_DOCKER) build -t 
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) \
+               --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
+               -f ./dashboard/Dockerfile.alpine .
+       @$(call func_echo_success_status, "$@ -> [ Done ]")
+
+
+### save-dashboard-alpine-tar : tar apache/apisix-dashboard:tag image
+.PHONY: save-dashboard-alpine-tar
+save-dashboard-alpine-tar:
+       @$(call func_echo_status, "$@ -> [ Start ]")
+       mkdir -p package
+       $(ENV_DOCKER) save -o 
./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION)-alpine.tar
 $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+       @$(call func_echo_success_status, "$@ -> [ Done ]")
+
+
 ### help : Show Makefile rules
 .PHONY: help
 help:
diff --git a/all-in-one/apisix-dashboard/Dockerfile 
b/all-in-one/apisix-dashboard/Dockerfile
new file mode 100644
index 0000000..f41eb82
--- /dev/null
+++ b/all-in-one/apisix-dashboard/Dockerfile
@@ -0,0 +1,144 @@
+#
+# 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.
+#
+
+ARG ENABLE_PROXY=false
+ARG ETCD_VERSION=v3.4.14
+ARG APISIX_VERSION=master
+ARG APISIX_DASHBOARD_VERSION=master
+
+# Build Apache APISIX
+FROM openresty/openresty:1.21.4.2-alpine-fat AS production-stage
+
+ARG APISIX_VERSION
+ARG ENABLE_PROXY
+LABEL apisix_version="${APISIX_VERSION}"
+
+RUN set -x \
+    && (test "${ENABLE_PROXY}" != "true" || /bin/sed -i 
's,http://dl-cdn.alpinelinux.org,https://mirrors.aliyun.com,g' 
/etc/apk/repositories) \
+    && apk add --no-cache --virtual .builddeps \
+    automake \
+    autoconf \
+    libtool \
+    pkgconfig \
+    cmake \
+    git \
+    openldap-dev \
+    sudo \
+    && mkdir ~/.luarocks \
+    && luarocks config variables.OPENSSL_LIBDIR 
/usr/local/openresty/openssl/lib \
+    && luarocks config variables.OPENSSL_INCDIR 
/usr/local/openresty/openssl/include \
+    && git config --global url.https://github.com/.insteadOf git://github.com/ 
\
+    && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sudo sh -s 
-- -y \
+    && source "$HOME/.cargo/env" \
+    && export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse \
+    # next line is for rust cdylib compile on musl
+    && export RUSTFLAGS="-C target-feature=-crt-static"  \
+    && luarocks install 
https://raw.githubusercontent.com/apache/apisix/master/apisix-master-0.rockspec 
--tree=/usr/local/apisix/deps PCRE_DIR=/usr/local/openresty/pcre \
+    && cp -v 
/usr/local/apisix/deps/lib/luarocks/rocks-5.1/apisix/${APISIX_VERSION}-0/bin/apisix
 /usr/bin/ \
+    && (if [ "$APISIX_VERSION" = "master" ] || [ "$APISIX_VERSION" \> "2.2" ]; 
then echo 'use shell ';else bin='#! 
/usr/local/openresty/luajit/bin/luajit\npackage.path = 
"/usr/local/apisix/?.lua;" .. package.path'; sed -i "1s@.*@$bin@" 
/usr/bin/apisix ; fi;) \
+    && mv /usr/local/apisix/deps/share/lua/5.1/apisix /usr/local/apisix \
+    && apk del .builddeps build-base make unzip
+
+# Build etcd
+FROM alpine:3.13 AS etcd-stage
+
+ARG ETCD_VERSION
+LABEL etcd_version="${ETCD_VERSION}"
+
+WORKDIR /tmp
+RUN wget 
https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz
 \
+    && tar -zxvf etcd-${ETCD_VERSION}-linux-amd64.tar.gz \
+    && ln -s etcd-${ETCD_VERSION}-linux-amd64 etcd
+
+
+# Build APISIX Dashboard - 1. download source code from github
+FROM alpine:latest as pre-build
+
+ARG APISIX_DASHBOARD_TAG
+
+RUN set -x \
+    && wget 
https://github.com/apache/apisix-dashboard/archive/${APISIX_DASHBOARD_TAG}.tar.gz
 -O /tmp/apisix-dashboard.tar.gz \
+    && mkdir /usr/local/apisix-dashboard \
+    && tar -xvf /tmp/apisix-dashboard.tar.gz -C /usr/local/apisix-dashboard 
--strip 1
+
+# Build APISIX Dashboard - 2. build manager-api from source code
+FROM golang:1.17 as api-builder
+
+ARG APISIX_DASHBOARD_VERSION
+ARG ENABLE_PROXY
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=pre-build /usr/local/apisix-dashboard .
+
+RUN if [ "$ENABLE_PROXY" = "true" ] ; then go env -w 
GOPROXY=https://goproxy.io,direct ; fi \
+    && go env -w GO111MODULE=on \
+    && CGO_ENABLED=0 ./api/build.sh
+
+# Build APISIX Dashboard - 3. build dashboard web-UI from source code
+FROM node:14-alpine as fe-builder
+
+ARG ENABLE_PROXY
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=pre-build /usr/local/apisix-dashboard .
+
+WORKDIR /usr/local/apisix-dashboard/web
+
+RUN if [ "$ENABLE_PROXY" = "true" ] ; then yarn config set registry 
https://registry.npmmirror.com/ ; fi \
+    && yarn install \
+    && yarn build
+
+# Finally combine all the resources into one image
+FROM alpine:3.13 AS last-stage
+
+ARG ENABLE_PROXY
+
+# add runtime for Apache APISIX
+RUN set -x \
+    && (test "${ENABLE_PROXY}" != "true" || /bin/sed -i 
's,http://dl-cdn.alpinelinux.org,https://mirrors.aliyun.com,g' 
/etc/apk/repositories) \
+    && apk add --no-cache bash libstdc++ curl
+
+WORKDIR /usr/local/apisix
+
+COPY --from=production-stage /usr/local/openresty/ /usr/local/openresty/
+COPY --from=production-stage /usr/local/apisix/ /usr/local/apisix/
+COPY --from=production-stage /usr/bin/apisix /usr/bin/apisix
+
+COPY --from=etcd-stage /tmp/etcd/etcd /usr/bin/etcd
+COPY --from=etcd-stage /tmp/etcd/etcdctl /usr/bin/etcdctl
+
+ENV 
PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin
+
+# dashboard
+
+RUN if [ "$ENABLE_PROXY" = "true" ] ; then sed -i 
's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ; fi \
+    && apk add lua5.1
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=api-builder /usr/local/apisix-dashboard/output/ ./
+COPY --from=fe-builder /usr/local/apisix-dashboard/output/ ./
+
+RUN mkdir logs
+
+EXPOSE 9080 9443 2379 2380 9000
+
+CMD ["sh", "-c", "(nohup etcd >/tmp/etcd.log 2>&1 &) && sleep 10 && 
(/usr/local/apisix-dashboard/manager-api &) && cd /usr/local/apisix && 
/usr/bin/apisix init && /usr/bin/apisix init_etcd && 
/usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon off;'"]
+
+STOPSIGNAL SIGQUIT
diff --git a/all-in-one/apisix-dashboard/conf.yaml 
b/all-in-one/apisix-dashboard/conf.yaml
new file mode 100644
index 0000000..0ca5ec2
--- /dev/null
+++ b/all-in-one/apisix-dashboard/conf.yaml
@@ -0,0 +1,51 @@
+#
+# 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.
+#
+
+conf:
+  listen:
+    host: 0.0.0.0     # `manager api` listening ip or host name
+    port: 9000          # `manager api` listening port
+  etcd:
+    endpoints:          # supports defining multiple etcd host addresses for 
an etcd cluster
+      - 127.0.0.1:2379
+
+                        # etcd basic auth info
+    # username: "root"    # ignore etcd username if not enable etcd auth
+    # password: "123456"  # ignore etcd password if not enable etcd auth
+  log:
+    error_log:
+      level: warn       # supports levels, lower to higher: debug, info, warn, 
error, panic, fatal
+      file_path:
+        logs/error.log  # supports relative path, absolute path, standard 
output
+                        # such as: logs/error.log, /tmp/logs/error.log, 
/dev/stdout, /dev/stderr
+authentication:
+  secret:
+    secret              # secret for jwt token generation.
+                        # NOTE: Highly recommended to modify this value to 
protect `manager api`.
+                        # if it's default value, when `manager api` start, it 
will generate a random string to replace it.
+  expire_time: 3600     # jwt token expire time, in second
+  users:
+    - username: admin   # username and password for login `manager api`
+      password: admin
+    - username: user
+      password: user
+
+plugin_attr:
+  prometheus:
+    export_addr:
+      ip: "0.0.0.0"
+      port: 9091
diff --git a/compose/dashboard-compose.yaml b/compose/dashboard-compose.yaml
new file mode 100644
index 0000000..bb195ab
--- /dev/null
+++ b/compose/dashboard-compose.yaml
@@ -0,0 +1,52 @@
+#
+# 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.
+#
+
+version: "3"
+
+services:
+  dashboard:
+    image: "apache/apisix-dashboard:${APISIX_DASHBOARD_VERSION}"
+    restart: always
+    volumes:
+      - 
../example/dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml:ro
+    depends_on:
+      - etcd
+    ports:
+      - "9000:9000/tcp"
+    networks:
+      - apisix
+
+  etcd:
+    image: bitnami/etcd:3.4.9
+    user: root
+    restart: always
+    volumes:
+      - ../example/etcd_data:/etcd_data
+    environment:
+      ETCD_DATA_DIR: /etcd_data
+      ETCD_ENABLE_V2: "true"
+      ALLOW_NONE_AUTHENTICATION: "yes"
+      ETCD_ADVERTISE_CLIENT_URLS: "http://etcd:2379";
+      ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379";
+    ports:
+      - "2379:2379/tcp"
+    networks:
+      - apisix
+
+networks:
+  apisix:
+    driver: bridge
diff --git a/dashboard/Dockerfile.alpine b/dashboard/Dockerfile.alpine
new file mode 100644
index 0000000..2a22055
--- /dev/null
+++ b/dashboard/Dockerfile.alpine
@@ -0,0 +1,71 @@
+#
+# 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.
+#
+ARG BUILDPLATFORM=amd64
+
+FROM --platform=$BUILDPLATFORM alpine:latest as pre-build
+
+ARG APISIX_DASHBOARD_TAG=v3.0.1
+
+RUN set -x \
+    && apk add --no-cache --virtual .builddeps git \
+    && git clone https://github.com/apache/apisix-dashboard.git -b 
${APISIX_DASHBOARD_TAG} /usr/local/apisix-dashboard \
+    && cd /usr/local/apisix-dashboard && git clean -Xdf \
+    && rm -f ./.githash && git log --pretty=format:"%h" -1 > ./.githash \
+    && rm /usr/local/openresty/bin/etcdctl
+
+FROM --platform=$BUILDPLATFORM golang:1.19 as api-builder
+
+ARG ENABLE_PROXY=false
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=pre-build /usr/local/apisix-dashboard .
+
+ARG TARGETOS
+ARG TARGETARCH
+
+RUN if [ "$ENABLE_PROXY" = "true" ] ; then go env -w 
GOPROXY=https://goproxy.io,direct ; fi \
+    && go env -w GO111MODULE=on \
+    && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} ./api/build.sh
+
+FROM --platform=$BUILDPLATFORM node:14-alpine as fe-builder
+
+ARG ENABLE_PROXY=false
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=pre-build /usr/local/apisix-dashboard .
+
+WORKDIR /usr/local/apisix-dashboard/web
+
+RUN if [ "$ENABLE_PROXY" = "true" ] ; then yarn config set registry 
https://registry.npm.taobao.org/ ; fi \
+    && yarn install \
+    && yarn build
+
+FROM alpine:latest as prod
+
+WORKDIR /usr/local/apisix-dashboard
+
+COPY --from=api-builder /usr/local/apisix-dashboard/output/ ./
+
+COPY --from=fe-builder /usr/local/apisix-dashboard/output/ ./
+
+RUN mkdir logs
+
+EXPOSE 9000
+
+ENTRYPOINT [ "/usr/local/apisix-dashboard/manager-api" ]
diff --git a/dashboard/README.md b/dashboard/README.md
new file mode 100644
index 0000000..ff0b81f
--- /dev/null
+++ b/dashboard/README.md
@@ -0,0 +1,7 @@
+### build command
+
+```shell
+$ docker build --build-arg APISIX_DASHBOARD_VERSION=$APISIX_DASHBOARD_VERSION 
-t $IMAGE_NAME .
+```
+
+Note: The minimum version of docker that supports building image is `docker 
17.05.0-ce`.
diff --git a/debian-dev/Dockerfile b/debian-dev/Dockerfile
index 59df830..a5c810c 100644
--- a/debian-dev/Dockerfile
+++ b/debian-dev/Dockerfile
@@ -15,7 +15,7 @@
 # limitations under the License.
 #
 
-FROM api7/apisix-base:dev AS build
+FROM api7/apisix-runtime:dev AS build
 
 ARG ENABLE_PROXY=false
 
@@ -35,14 +35,14 @@ RUN set -x \
         unzip \
         wget \
     && curl 
https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh
 -sL | bash - \
-    && luarocks install 
https://github.com/apache/apisix/raw/master/rockspec/apisix-master-0.rockspec 
--tree=/usr/local/apisix/deps PCRE_DIR=/usr/local/openresty/pcre \
+    && luarocks install 
https://raw.githubusercontent.com/apache/apisix/master/apisix-master-0.rockspec 
--tree=/usr/local/apisix/deps PCRE_DIR=/usr/local/openresty/pcre \
     && cp -v 
/usr/local/apisix/deps/lib/luarocks/rocks-5.1/apisix/master-0/bin/apisix 
/usr/bin/ \
     && mv /usr/local/apisix/deps/share/lua/5.1/apisix /usr/local/apisix \
     # forward request and error logs to docker log collector
     && ln -sf /dev/stdout /usr/local/apisix/logs/access.log \
     && ln -sf /dev/stderr /usr/local/apisix/logs/error.log
 
-FROM api7/apisix-base:dev AS production-stage
+FROM api7/apisix-runtime:dev AS production-stage
 
 COPY --from=build /usr/local/apisix /usr/local/apisix
 COPY --from=build /usr/bin/apisix /usr/bin/apisix
@@ -55,7 +55,7 @@ RUN apt-get -y update --fix-missing \
 
 WORKDIR /usr/local/apisix
 
-ENV 
PATH=$PATH:/usr/local/openresty-debug/luajit/bin:/usr/local/openresty-debug/nginx/sbin:/usr/local/openresty-debug/bin
+ENV 
PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin
 
 EXPOSE 9080 9443
 
diff --git a/debian-dev/Dockerfile.local b/debian-dev/Dockerfile.local
index c861088..0ff3ea4 100644
--- a/debian-dev/Dockerfile.local
+++ b/debian-dev/Dockerfile.local
@@ -17,7 +17,7 @@
 
 # Use this dockerfile to create a docker image of your apisix local/patched 
codebase
 
-FROM api7/apisix-base:dev AS build
+FROM api7/apisix-runtime:dev AS build
 
 ARG ENABLE_PROXY=false
 
@@ -26,16 +26,31 @@ ENV DEBIAN_FRONTEND noninteractive
 # replace the source path with the location of apisix related directories in 
your host machine
 # refer: 
https://web.archive.org/web/20230604150902/https://www.jamestharpe.com/docker-include-files-outside-build-context/
 
-COPY ./apisix /usr/local/apisix/apisix
-COPY ./conf /usr/local/apisix/conf
-COPY ./bin/apisix /usr/bin/apisix
-COPY ./rockspec/apisix-master-0.rockspec 
/usr/local/apisix/rockspec/apisix-master-0.rockspec
-COPY ./utils/linux-install-luarocks.sh 
/usr/local/apisix/linux-install-luarocks.sh
+COPY apisix/apisix /usr/local/apisix/apisix
+COPY apisix/conf /usr/local/apisix/conf
+COPY apisix/bin/apisix /usr/bin/apisix
+COPY apisix/apisix-master-0.rockspec /usr/local/apisix/apisix-master-0.rockspec
+COPY apisix/utils/linux-install-luarocks.sh 
/usr/local/apisix/linux-install-luarocks.sh
+COPY debian-dev/docker-entrypoint.sh /docker-entrypoint.sh
+
 
 WORKDIR /usr/local/apisix
 
 SHELL ["/bin/bash", "-c"]
 
+RUN set -x \
+    && DEBIAN_FRONTEND=noninteractive apt-get update \
+    && DEBIAN_FRONTEND=noninteractive apt-get install -y libreadline-dev 
lsb-release libpcre3 libpcre3-dev libldap2-dev libssl-dev perl build-essential \
+    && DEBIAN_FRONTEND=noninteractive apt-get -y install 
--no-install-recommends wget gnupg ca-certificates
+
+RUN set -x \
+    && wget -O - https://openresty.org/package/pubkey.gpg | apt-key add - \
+    && wget -O - http://repos.apiseven.com/pubkey.gpg | apt-key add - \
+    && echo "deb http://openresty.org/package/debian bullseye openresty" | tee 
/etc/apt/sources.list.d/openresty.list \
+    && echo "deb http://repos.apiseven.com/packages/debian bullseye main" | 
tee /etc/apt/sources.list.d/apisix.list \
+    && DEBIAN_FRONTEND=noninteractive apt-get update \
+    && DEBIAN_FRONTEND=noninteractive apt-get install -y apisix-runtime
+
 RUN set -x \
     && (test "${ENABLE_PROXY}" != "true" || /bin/sed -i 
's,http://deb.debian.org,http://mirrors.aliyun.com,g' /etc/apt/sources.list) \
     && apt-get -y update --fix-missing \
@@ -50,26 +65,25 @@ RUN set -x \
         wget \
         make \
         libssl-dev \
-    && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 
\ 
+    && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 
\
     && source "$HOME/.cargo/env" \
     # rust version 1.69.0 required to compile lua-resty-ldap
     && rustup install 1.69.0 \
     && rustup default 1.69.0 \
     && bash ./linux-install-luarocks.sh \
-    && luarocks config variables.OPENSSL_INCDIR /usr/include/ \ 
+    && luarocks config variables.OPENSSL_INCDIR /usr/include/ \
     && luarocks config variables.PCRE_DIR /usr/local/openresty/pcre \
-    && luarocks install rockspec/apisix-master-0.rockspec 
--tree=/usr/local/apisix/deps --deps-only \
+    && luarocks install apisix-master-0.rockspec --tree=/usr/local/apisix/deps 
--deps-only \
     && mkdir /usr/local/apisix/logs && touch /usr/local/apisix/logs/error.log 
&& touch /usr/local/apisix/logs/access.log
 
-ENV 
PATH=$PATH:/usr/local/openresty-debug/luajit/bin:/usr/local/openresty-debug/nginx/sbin:/usr/local/openresty-debug/bin
+ENV 
PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin
 
 EXPOSE 9080 9443
 
-RUN wget 
https://raw.githubusercontent.com/apache/apisix-docker/master/debian-dev/docker-entrypoint.sh
 
-RUN ["chmod", "+x", "./docker-entrypoint.sh"]
+RUN ["chmod", "+x", "/docker-entrypoint.sh"]
 
-ENTRYPOINT ["./docker-entrypoint.sh"]
+ENTRYPOINT ["/docker-entrypoint.sh"]
 
 CMD ["docker-start"]
 
diff --git a/debian-dev/docker-entrypoint.sh b/debian-dev/docker-entrypoint.sh
index e7fdc01..1fe8c44 100755
--- a/debian-dev/docker-entrypoint.sh
+++ b/debian-dev/docker-entrypoint.sh
@@ -54,8 +54,8 @@ _EOC_
     if [ -e "/usr/local/apisix/conf/config_listen.sock" ]; then
         rm -f "/usr/local/apisix/conf/config_listen.sock"
     fi
-    
-    exec /usr/local/openresty-debug/bin/openresty -p /usr/local/apisix -g 
'daemon off;'
+
+    exec /usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon 
off;'
 fi
 
 exec "$@"

Reply via email to