diff --git a/.dockerignore b/.dockerignore index 1d3ffe5d41..eb5a316cbd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1 @@ target -docs \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0eb9da8c2e..cb03e6930e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,8 @@ on: - '.github/**' - '**.md' - '**.yml' + - '.dockerignore' + - 'docker/**' pull_request: branches: - main @@ -22,6 +24,8 @@ on: - '.github/**' - '**.md' - '**.yml' + - '.dockerignore' + - 'docker/**' # Common environment variables env: diff --git a/.github/workflows/docker-build-image.yml b/.github/workflows/docker-build-image.yml index f8885a2ee1..142ae878d1 100644 --- a/.github/workflows/docker-build-image.yml +++ b/.github/workflows/docker-build-image.yml @@ -1,6 +1,7 @@ name: Test Docker image build on: + workflow_dispatch: pull_request: paths: - '.github/workflows/docker-build-image.yml' @@ -15,6 +16,8 @@ on: env: CERESDB_ADDR: 127.0.0.1 CERESDB_PORT: 5440 + IMAGE_NAME: ceresdb-server:latest + SERVER_NAME: standalone-server jobs: docker: @@ -23,16 +26,17 @@ jobs: - name: Checkout uses: actions/checkout@v3 - name: Build Docker image - run: docker build -t ceresdb-server . + run: docker build -t ${IMAGE_NAME} . - name: Test the Built Image - run: >- - docker run -p ${CERESDB_ADDR}:${CERESDB_PORT}:${CERESDB_PORT} -d ceresdb-server && - sleep 10 && - bash ./docker/basic.sh && - docker rm -f ceresdb-server + run: | + docker run --name ${SERVER_NAME} -p ${CERESDB_ADDR}:${CERESDB_PORT}:${CERESDB_PORT} -d ${IMAGE_NAME} + sleep 10 + bash ./docker/basic.sh + docker rm -f ${SERVER_NAME} - name: Test the Built Image With Config - run: >- - docker run -p ${CERESDB_ADDR}:${CERESDB_PORT}:${CERESDB_PORT} -v `pwd`/docs/minimal.toml:/etc/ceresdb/ceresdb.toml -d ceresdb-server && - sleep 10 && - bash ./docker/basic.sh && - docker rm -f ceresdb-server + run: | + docker run --name ${SERVER_NAME} -p ${CERESDB_ADDR}:${CERESDB_PORT}:${CERESDB_PORT} \ + -v `pwd`/docs/minimal.toml:/etc/ceresdb/ceresdb.toml -d ${IMAGE_NAME} + sleep 10 + bash ./docker/basic.sh + docker rm -f ${SERVER_NAME} diff --git a/.github/workflows/dockerhub-description.yml b/.github/workflows/dockerhub-description.yml index 8ea257b028..c0445a77fe 100644 --- a/.github/workflows/dockerhub-description.yml +++ b/.github/workflows/dockerhub-description.yml @@ -1,4 +1,5 @@ name: Update Docker Hub Description + on: push: branches: diff --git a/.github/workflows/dockerhub-publish.yml b/.github/workflows/dockerhub-publish.yml index f90b14836b..202ac16948 100644 --- a/.github/workflows/dockerhub-publish.yml +++ b/.github/workflows/dockerhub-publish.yml @@ -1,6 +1,7 @@ -name: Build Docker Image and Push to Docker Hub on Tags +name: Publish Docker image on: + workflow_dispatch: push: tags: - 'v*' @@ -24,4 +25,4 @@ jobs: with: context: . push: true - tags: ceresdb/ceresdb-server:${{github.ref_name}} + tags: ceresdb/ceresdb-server:latest,ceresdb/ceresdb-server:${{github.ref_name}} diff --git a/docker/basic.sh b/docker/basic.sh index 420d967b73..b5fd3d2e92 100755 --- a/docker/basic.sh +++ b/docker/basic.sh @@ -2,6 +2,16 @@ set -exo pipefail +trap cleanup EXIT + +cleanup() { + exit_code=$? + # cat server log when script failed + if [[ ${exit_code} -ne 0 ]]; then + docker logs -n 200 ${SERVER_NAME} + fi +} + ADDR=${CERESDB_ADDR:-"127.0.0.1"} PORT=${CERESDB_PORT:-"5440"} diff --git a/docs/dockerhub-description.md b/docs/dockerhub-description.md index f2b71f4811..08e5e3907a 100644 --- a/docs/dockerhub-description.md +++ b/docs/dockerhub-description.md @@ -11,7 +11,7 @@ docker run -d --name ceresdb-server \ -p 8831:8831 \ -p 3307:3307 \ -p 5440:5440 \ - ceresdb/ceresdb-server:v0.2.0 + ceresdb/ceresdb-server:$(version) ``` CeresDB will listen three ports when start: @@ -19,20 +19,18 @@ CeresDB will listen three ports when start: - 3307, MySQL port - 5440, HTTP port -There are some files used by server inside Docker image, the following two are most important: -- `/home/admin/logs/ceresdb/out.log`, log +There are some files used by server inside Docker image, the following one is the most important: - `/etc/ceresdb/ceresdb.toml`, config -You overwrite those files with this command: +You overwrite config with this command: ```bash docker run -d --name ceresdb-server \ -p 8831:8831 \ -p 3307:3307 \ -p 5440:5440 \ - -v $(path/to/log):/home/admin/logs/ceresdb/out.log \ -v $(path/to/config):/etc/ceresdb/ceresdb.toml \ - ceresdb/ceresdb-server:v0.2.0 + ceresdb/ceresdb-server:$(version) ``` # Documentation diff --git a/docs/minimal.toml b/docs/minimal.toml index 5e4283392a..690b1f965d 100644 --- a/docs/minimal.toml +++ b/docs/minimal.toml @@ -1,4 +1,4 @@ -bind_addr = "127.0.0.1" +bind_addr = "0.0.0.0" http_port = 5440 grpc_port = 8831 log_level = "info"