-
Notifications
You must be signed in to change notification settings - Fork 455
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
- Loading branch information
Showing
12 changed files
with
477 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Oops, something went wrong.