diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd8e4616bfc6..46afbcc9074d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,6 +114,7 @@ jobs: uses: docker/build-push-action@v2 if: github.repository == 'casdoor/casdoor' && github.event_name == 'push' && steps.should_push.outputs.push=='true' with: + target: STANDARD push: true tags: casbin/casdoor:${{steps.get-current-tag.outputs.tag }},casbin/casdoor:latest diff --git a/Dockerfile b/Dockerfile index 1863705d06a2..ad7ac1cf2971 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,3 @@ -FROM golang:1.17.5 AS BACK -WORKDIR /go/src/casdoor -COPY . . -RUN ./build.sh && apt update && apt install wait-for-it && chmod +x /usr/bin/wait-for-it - FROM node:16.13.0 AS FRONT WORKDIR /web COPY ./web . @@ -10,28 +5,43 @@ RUN yarn config set registry https://registry.npmmirror.com RUN yarn install && yarn run build -FROM debian:latest AS ALLINONE -RUN apt update -RUN apt install -y ca-certificates && update-ca-certificates -RUN apt install -y mariadb-server mariadb-client && mkdir -p web/build && chmod 777 /tmp +FROM golang:1.17.5 AS BACK +WORKDIR /go/src/casdoor +COPY . . +RUN ./build.sh + + +FROM alpine:latest AS STANDARD LABEL MAINTAINER="https://casdoor.org/" -COPY --from=BACK /go/src/casdoor/ ./ -COPY --from=BACK /usr/bin/wait-for-it ./ -COPY --from=FRONT /web/build /web/build -CMD chmod 777 /tmp && service mariadb start&&\ -if [ "${MYSQL_ROOT_PASSWORD}" = "" ] ;then MYSQL_ROOT_PASSWORD=123456 ; fi&&\ -mysqladmin -u root password ${MYSQL_ROOT_PASSWORD} &&\ -./wait-for-it localhost:3306 -- ./server --createDatabase=true - - -FROM alpine:latest -RUN sed -i 's/https/http/' /etc/apk/repositories -RUN apk add curl -RUN apk add ca-certificates && update-ca-certificates + +WORKDIR /app +COPY --from=BACK /go/src/casdoor/server ./server +COPY --from=BACK /go/src/casdoor/swagger ./swagger +COPY --from=BACK /go/src/casdoor/conf/app.conf ./conf/app.conf +COPY --from=FRONT /web/build ./web/build +VOLUME /app/files /app/logs +ENTRYPOINT ["/app/server"] + + +FROM debian:latest AS db +RUN apt update \ + && apt install -y \ + mariadb-server \ + mariadb-client \ + && rm -rf /var/lib/apt/lists/* + + +FROM db AS ALLINONE LABEL MAINTAINER="https://casdoor.org/" -COPY --from=BACK /go/src/casdoor/ ./ -COPY --from=BACK /usr/bin/wait-for-it ./ -RUN mkdir -p web/build && apk add --no-cache bash coreutils -COPY --from=FRONT /web/build /web/build -CMD ./server +ENV MYSQL_ROOT_PASSWORD=123456 + +WORKDIR /app +COPY --from=BACK /go/src/casdoor/server ./server +COPY --from=BACK /go/src/casdoor/swagger ./swagger +COPY --from=BACK /go/src/casdoor/docker-entrypoint.sh /docker-entrypoint.sh +COPY --from=BACK /go/src/casdoor/conf/app.conf ./conf/app.conf +COPY --from=FRONT /web/build ./web/build + +ENTRYPOINT ["/bin/bash"] +CMD ["/docker-entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index 69ebf2d63fb4..458cd7296b9a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,7 @@ services: build: context: ./ dockerfile: Dockerfile + target: STANDARD entrypoint: /bin/sh -c './server --createDatabase=true' ports: - "8000:8000" diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 000000000000..f38bc1d2b875 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +service mariadb start + +mysqladmin -u root password ${MYSQL_ROOT_PASSWORD} + +exec /app/server --createDatabase=true diff --git a/object/init.go b/object/init.go index 843993398466..14c3365c3716 100644 --- a/object/init.go +++ b/object/init.go @@ -104,7 +104,7 @@ func initBuiltInUser() { IsGlobalAdmin: true, IsForbidden: false, IsDeleted: false, - SignupApplication: "built-in-app", + SignupApplication: "app-built-in", CreatedIp: "127.0.0.1", Properties: make(map[string]string), } diff --git a/web/src/PermissionListPage.js b/web/src/PermissionListPage.js index 98192509e6e9..9c1ca42434b8 100644 --- a/web/src/PermissionListPage.js +++ b/web/src/PermissionListPage.js @@ -93,7 +93,7 @@ class PermissionListPage extends BaseListPage { ...this.getColumnSearchProps('name'), render: (text, record, index) => { return ( - + {text} )