diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..6eb65d0 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // Используйте IntelliSense, чтобы узнать о возможных атрибутах. + // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. + // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "bunkerd docker debug", + "type": "go", + "debugAdapter": "dlv-dap", + "request": "attach", + "mode": "remote", + "port": 54401, + "host": "127.0.0.1", + "stopOnEntry": true, + "substitutePath": [ + { + "from": "${workspaceFolder}", + "to": "bunker" + } + ], + "preLaunchTask": "Run bunkerd debug build" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..73b8117 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Run bunkerd debug build", + "type": "shell", + "command": "task server:localdev:bunkerd:build-debug && task server:localdev:bunkerd:restart-debug", + "group": { + "kind": "test", + "isDefault": true + }, + "presentation": { + // Do not open terminal every time debug is launched. + "reveal": "silent" + } + } + ] +} diff --git a/server/Dockerfile b/server/Dockerfile index 1c79681..a7f7154 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -13,6 +13,4 @@ RUN apt-get update && \ COPY --from=build /bunkerd/_build/bunkerd /bunkerd COPY --from=build /usr/local/bin/dlv /dlv -COPY server/entrypoint.sh /entrypoint.sh - -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/bunkerd"] diff --git a/server/Dockerfile.debug b/server/Dockerfile.debug new file mode 100644 index 0000000..1818c55 --- /dev/null +++ b/server/Dockerfile.debug @@ -0,0 +1,16 @@ +FROM code.pztrn.name/containers/go-toolbox:v8 AS build + +WORKDIR /bunkerd +COPY . /bunkerd +RUN --mount=type=cache,target="/home/container/go" task server:cmd:bunkerd:build --force + +FROM debian:13-slim + +RUN apt-get update && \ + apt-get install -y ca-certificates iputils-ping coreutils && \ + rm -rf /var/lib/apt/* /var/cache/apt/* + +COPY --from=build /bunkerd/_build/bunkerd /bunkerd +COPY --from=build /usr/local/bin/dlv /dlv + +ENTRYPOINT ["/dlv", "--listen=:4000", "--headless=true", "--log=true", "--accept-multiclient", "--api-version=2", "exec", "/bunkerd"] diff --git a/server/entrypoint.sh b/server/entrypoint.sh deleted file mode 100755 index 12bbe61..0000000 --- a/server/entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -echo "* Starting bunkerd..." -if [ -n "${BUNKERD_DEBUG}" ]; then - exec /dlv --listen=:4000 --headless=true --log=true --accept-multiclient --api-version=2 exec /bunkerd --continue -else - exec /bunkerd -fi diff --git a/server/internal/application/application.go b/server/internal/application/application.go index a6523d3..c92c794 100644 --- a/server/internal/application/application.go +++ b/server/internal/application/application.go @@ -10,10 +10,7 @@ import ( "time" ) -var ( - errApplication = errors.New("application") - errNoMainWindow = errors.New("no main window service registered") -) +var errApplication = errors.New("application") // Application is a lifecycle controlling structure for application. type Application struct { diff --git a/server/localdevzone/bunkerd/Taskfile.yml b/server/localdevzone/bunkerd/Taskfile.yml index 3481e74..6f1f3b4 100644 --- a/server/localdevzone/bunkerd/Taskfile.yml +++ b/server/localdevzone/bunkerd/Taskfile.yml @@ -8,36 +8,72 @@ tasks: cmds: - docker compose -p bunkerd -f docker-compose.yaml build + build-debug: + desc: "Builds bunkerd's debug build container." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml build + down: desc: "Deletes all bunkerd's data (down)." dir: "./server/localdevzone/bunkerd" cmds: - docker compose -p bunkerd -f docker-compose.yaml down --volumes + down-debug: + desc: "Deletes all bunkerd's debug build data (down)." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml down --volumes + logs: desc: "Show bunkerd logs." dir: "./server/localdevzone/bunkerd" cmds: - docker compose -p bunkerd -f docker-compose.yaml logs -f + logs-debug: + desc: "Show bunkerd debug build logs." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml logs -f + restart: desc: "Restart bunkerd." dir: "./server/localdevzone/bunkerd" cmds: - docker compose -p bunkerd -f docker-compose.yaml restart + restart-debug: + desc: "Restart bunkerd debug build." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml restart + start: desc: "Start bunkerd." dir: "./server/localdevzone/bunkerd" cmds: - docker compose -p bunkerd -f docker-compose.yaml start + start-debug: + desc: "Start bunkerd debug build." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd -f docker-compose.yaml start + stop: desc: "Stop bunkerd without deleting it's data." dir: "./server/localdevzone/bunkerd" cmds: - docker compose -p bunkerd -f docker-compose.yaml stop + stop-debug: + desc: "Stop bunkerd debug build without deleting it's data." + dir: "./server/localdevzone/bunkerd" + cmds: + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml stop + up: desc: "Start bunkerd (up -d)." dir: "./server/localdevzone/bunkerd" @@ -45,3 +81,11 @@ tasks: - task: :common:network-up - task: build - docker compose -p bunkerd -f docker-compose.yaml up -d + + up-debug: + desc: "Start bunkerd debug build (up -d)." + dir: "./server/localdevzone/bunkerd" + cmds: + - task: :common:network-up + - task: build + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml up -d diff --git a/server/localdevzone/bunkerd/docker-compose.debug.yaml b/server/localdevzone/bunkerd/docker-compose.debug.yaml new file mode 100644 index 0000000..b410276 --- /dev/null +++ b/server/localdevzone/bunkerd/docker-compose.debug.yaml @@ -0,0 +1,23 @@ +--- +services: + bunkerd-debug: + container_name: "bunkerd-debug" + build: + context: ../../../ + dockerfile: server/Dockerfile.debug + ports: + - "54400:54400" + - "54401:4000" + volumes: + - "./data:/data" + networks: + bunkerd: + ipv4_address: 247.247.0.3 + environment: + BUNKERD_DATABASE_DSN: " " + cap_add: + - SYS_PTRACE + +networks: + bunkerd: + external: true diff --git a/server/localdevzone/bunkerd/docker-compose.yaml b/server/localdevzone/bunkerd/docker-compose.yaml index 8651d48..5610a11 100644 --- a/server/localdevzone/bunkerd/docker-compose.yaml +++ b/server/localdevzone/bunkerd/docker-compose.yaml @@ -7,14 +7,12 @@ services: dockerfile: server/Dockerfile ports: - "53400:53400" - - "54000:4000" volumes: - "./data:/data" networks: bunkerd: ipv4_address: 247.247.0.2 environment: - BUNKERD_DEBUG: "true" BUNKERD_DATABASE_DSN: " " cap_add: - SYS_PTRACE