From 6a53c1aa67fc78d36d30bcd3cbd3601ce970b407 Mon Sep 17 00:00:00 2001 From: Sergey Date: Mon, 10 Apr 2023 18:38:19 +0000 Subject: [PATCH] Use docker registry and CI --- .gitlab-ci.yml | 24 ++++++++++++++++++++++++ docker-compose.yml | 33 ++++++++++++++++++--------------- docker/Dockerfile_app | 4 ++-- docker/Dockerfile_db | 14 -------------- 4 files changed, 44 insertions(+), 31 deletions(-) create mode 100644 .gitlab-ci.yml delete mode 100644 docker/Dockerfile_db diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..247a4a0 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,24 @@ +docker-build: + image: docker:latest + stage: build + variables: + GIT_SUBMODULE_STRATEGY: normal + services: + - docker:dind + before_script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + script: + - touch .env + - | + if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then # master + export BUILD_TAG=latest + echo "Running on default branch '$CI_DEFAULT_BRANCH'" + else # tag + export BUILD_TAG="$CI_COMMIT_TAG" + echo "Running on tag = $BUILD_TAG" + fi + - docker compose build + - docker compose push + only: + - master + - tags \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 26db4b6..46dc091 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,6 @@ -version: "3.4" services: - packmate: + packmate: # port = 65000 environment: - DB_USER: ${PACKMATE_DB_USER:-packmate} DB_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb} DB_NAME: ${PACKMATE_DB_NAME:-packmate} INTERFACE: ${PACKMATE_INTERFACE:-} @@ -21,11 +19,11 @@ services: context: . dockerfile: docker/Dockerfile_app network_mode: "host" - image: packmate-app:v1 + image: registry.gitlab.com/packmate/packmate:${BUILD_TAG:-latest} command: [ "java", "-Djava.net.preferIPv4Stack=true", "-Djava.net.preferIPv4Addresses=true", "-jar", "/app/app.jar", "--spring.datasource.url=jdbc:postgresql://127.0.0.1:65001/$${DB_NAME}", - "--spring.datasource.username=$${DB_USER}", "--spring.datasource.password=$${DB_PASSWORD}", + "--spring.datasource.password=$${DB_PASSWORD}", "--capture-mode=$${MODE}", "--pcap-file=$${PCAP_FILE}", "--interface-name=$${INTERFACE}", "--local-ip=$${LOCAL_IP}", "--account-login=$${WEB_LOGIN}", "--old-streams-cleanup-enabled=$${OLD_STREAMS_CLEANUP_ENABLED}", "--cleanup-interval=$${OLD_STREAMS_CLEANUP_INTERVAL}", @@ -33,19 +31,24 @@ services: "--account-password=$${WEB_PASSWORD}", "--server.port=65000", "--server.address=0.0.0.0" ] depends_on: - - db - db: + db: + condition: service_healthy + db: # port = 65001 container_name: packmate-db - build: - context: . - dockerfile: docker/Dockerfile_db - args: - POSTGRES_USER: ${PACKMATE_DB_USER:-packmate} - POSTGRES_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb} - POSTGRES_DB: ${PACKMATE_DB_NAME:-packmate} + environment: + POSTGRES_USER: packmate + POSTGRES_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb} + POSTGRES_DB: ${PACKMATE_DB_NAME:-packmate} env_file: - .env volumes: - "./data/postgres_data:/var/lib/postgresql/data" + - "./docker/postgresql.conf:/tmp/postgresql.conf:ro" + - "./docker/update_db_config.sh:/docker-entrypoint-initdb.d/_update_db_config.sh:ro" network_mode: "host" - image: packmate-db:v1 \ No newline at end of file + image: postgres:15.2 + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U packmate -p 65001" ] + interval: 2s + timeout: 5s + retries: 15 \ No newline at end of file diff --git a/docker/Dockerfile_app b/docker/Dockerfile_app index 3d4d79a..0ce06dd 100644 --- a/docker/Dockerfile_app +++ b/docker/Dockerfile_app @@ -7,10 +7,10 @@ FROM eclipse-temurin:17-jdk WORKDIR /tmp/compile/ COPY ./ . COPY --from=0 /tmp/build/dist/ ./src/main/resources/static/ -RUN ./gradlew --no-daemon build -x test +RUN ./gradlew --no-daemon bootJar FROM eclipse-temurin:17-jre WORKDIR /app -RUN apt update && apt install -y libpcap0.8 +RUN apt update && apt install -y libpcap0.8 && rm -rf /var/lib/apt/lists/* COPY --from=1 /tmp/compile/build/libs/packmate-*-SNAPSHOT.jar app.jar EXPOSE 65000 \ No newline at end of file diff --git a/docker/Dockerfile_db b/docker/Dockerfile_db deleted file mode 100644 index 19af80a..0000000 --- a/docker/Dockerfile_db +++ /dev/null @@ -1,14 +0,0 @@ -FROM postgres:15.1 - -ARG POSTGRES_USER -ARG POSTGRES_PASSWORD -ARG POSTGRES_DB - -ENV POSTGRES_USER ${POSTGRES_USER} -ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD} -ENV POSTGRES_DB ${POSTGRES_DB} - -COPY docker/postgresql.conf /tmp/postgresql.conf -COPY docker/update_db_config.sh /docker-entrypoint-initdb.d/_update_db_config.sh - -EXPOSE 65001