Skip to content

Commit

Permalink
[ci] Add docker compose for running local cluster #1446 (#1456)
Browse files Browse the repository at this point in the history
* Create .dockerignore

* Create containerfile

* Update agdb_server.yaml

* Update agdb_server.yaml

* Update release.yaml

* Update release.yaml

* Update release.yaml
  • Loading branch information
michaelvlach authored Jan 3, 2025
1 parent 583956d commit 1adcf9e
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/target
**/vendor
**/node_modules
**/dist
**/build
14 changes: 14 additions & 0 deletions .github/workflows/agdb_server.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,17 @@ jobs:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo fmt --package agdb_server --check

agdb_server_image:
runs-on: ubuntu-latest
needs: diff
if: needs.diff.outputs.diff == 'true'
steps:
- uses: actions/checkout@v4
- run: docker build --pull -t agnesoft/agdb:dev -f agdb_server/containerfile .
- run: docker run -d -p 3000:3000 agnesoft/agdb:dev
- run: sleep 5
- run: curl http://localhost:3000/api/v1/status
- run: |
token=$(curl -X POST http://localhost:3000/api/v1/user/login -H "Content-Type: application/json" -d '{"username":"admin","password":"admin"}')
curl -H "Authorization: Bearer $token" -X POST http://localhost:3000/api/v1/admin/shutdown
28 changes: 28 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo build --package agdb_derive --package agdb --package agdb_api --package agdb_server --all-features --release

dev_image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: docker build --pull -t agnesoft/agdb:dev -f agdb_server/containerfile .
- run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u agnesoft --password-stdin
- run: docker push agnesoft/agdb:dev
- run: docker tag agnesoft/agdb:dev ghcr.io/agnesoft/agdb:dev
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u agnesoft --password-stdin
- run: docker push ghcr.io/agnesoft/agdb:dev

new_version:
runs-on: ubuntu-latest
outputs:
Expand Down Expand Up @@ -79,3 +90,20 @@ jobs:
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_ORG_TOKEN }}

publish_dockerhub_ghcr:
runs-on: ubuntu-latest
needs: [release, new_version]
if: needs.new_version.outputs.new_version != ''
steps:
- uses: actions/checkout@v4
- run: docker build -t agnesoft/agdb:latest -f agdb_server/containerfile .
- run: docker tag agnesoft/agdb:latest agnesoft/agdb:${{ needs.new_version.outputs.new_version }}
- run: echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u agnesoft --password-stdin
- run: docker push agnesoft/agdb:latest
- run: docker push agnesoft/agdb:${{ needs.new_version.outputs.new_version }}
- run: docker tag agnesoft/agdb:latest ghcr.io/agnesoft/agdb:latest
- run: docker tag agnesoft/agdb:${{ needs.new_version.outputs.new_version }} ghcr.io/agnesoft/agdb:${{ needs.new_version.outputs.new_version }}
- run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u agnesoft --password-stdin
- run: docker push ghcr.io/agnesoft/agdb:latest
- run: docker push ghcr.io/agnesoft/agdb:${{ needs.new_version.outputs.new_version }}
18 changes: 18 additions & 0 deletions agdb_server/containerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM rust:alpine AS builder
WORKDIR /usr/src/agdb_server
COPY . .
RUN apk add --no-cache musl-dev openssl-dev openssl-libs-static
RUN cargo build --package agdb_server --release

FROM alpine:latest
COPY --from=builder /usr/src/agdb_server/target/release/agdb_server /usr/local/bin/agdb_server
# adduser -D: disable password, -H: do not create home directory
RUN addgroup -g 1000 agdb && \
adduser -D -H -u 1000 -G agdb agdb && \
mkdir -p /agdb && \
chown agdb:agdb /agdb
USER agdb
WORKDIR /agdb
CMD ["/usr/local/bin/agdb_server"]

EXPOSE 3000

0 comments on commit 1adcf9e

Please sign in to comment.