2021-05-17 03:40:02 +02:00
|
|
|
COMPOSE_PROJECT_NAME_NODE ?= node
|
2022-05-07 15:04:44 +02:00
|
|
|
COMPOSE_PROJECT_NAME_USER ?= $(USER)_myos_$(ENV)
|
2021-07-12 21:04:06 +02:00
|
|
|
DOCKER_ENV_ARGS ?= $(docker_env_args)
|
2021-02-09 17:05:00 +01:00
|
|
|
DOCKER_EXEC_OPTIONS ?=
|
2021-07-11 09:56:03 +02:00
|
|
|
DOCKER_GID ?= $(call gid,docker)
|
2021-02-09 17:05:00 +01:00
|
|
|
DOCKER_IMAGE ?= $(DOCKER_IMAGE_CLI)
|
2022-05-09 15:33:46 +02:00
|
|
|
DOCKER_IMAGE_CLI ?= $(DOCKER_REPOSITORY_USER)/cli
|
|
|
|
DOCKER_IMAGE_SSH ?= $(DOCKER_REPOSITORY_USER)/ssh
|
2021-02-09 17:05:00 +01:00
|
|
|
DOCKER_NAME ?= $(DOCKER_NAME_CLI)
|
2022-05-07 15:04:44 +02:00
|
|
|
DOCKER_NAME_CLI ?= $(COMPOSE_PROJECT_NAME_USER)_cli
|
|
|
|
DOCKER_NAME_SSH ?= $(COMPOSE_PROJECT_NAME_USER)_ssh
|
2021-02-09 17:05:00 +01:00
|
|
|
DOCKER_NETWORK ?= $(DOCKER_NETWORK_PRIVATE)
|
2021-06-14 12:52:48 +02:00
|
|
|
DOCKER_NETWORK_PRIVATE ?= $(USER_ENV)
|
2022-05-07 15:04:44 +02:00
|
|
|
DOCKER_NETWORK_PUBLIC ?= $(COMPOSE_PROJECT_NAME_NODE)
|
2022-05-09 15:33:46 +02:00
|
|
|
DOCKER_REPOSITORY_USER ?= $(subst _,/,$(COMPOSE_PROJECT_NAME_USER))
|
2021-05-17 03:40:02 +02:00
|
|
|
DOCKER_REPOSITORY_NODE ?= $(subst _,/,$(COMPOSE_PROJECT_NAME_NODE))
|
2022-01-09 17:32:54 +01:00
|
|
|
# DOCKER_RUN: if empty, run system command, else run it in a docker
|
2022-02-07 15:09:51 +01:00
|
|
|
DOCKER_RUN ?= $(if $(filter-out false False FALSE,$(DOCKER)),$(DOCKER))
|
2021-06-14 12:52:48 +02:00
|
|
|
# DOCKER_RUN_OPTIONS: default options of `docker run` command
|
|
|
|
DOCKER_RUN_OPTIONS += --rm -it
|
|
|
|
# DOCKER_RUN_VOLUME: options -v of `docker run` command to mount additionnal volumes
|
|
|
|
DOCKER_RUN_VOLUME += -v /var/run/docker.sock:/var/run/docker.sock
|
|
|
|
DOCKER_RUN_WORKDIR ?= -w $(PWD)
|
2022-05-07 15:04:44 +02:00
|
|
|
DOCKER_VOLUME_SSH ?= $(COMPOSE_PROJECT_NAME_USER)_ssh
|
2022-05-09 15:33:46 +02:00
|
|
|
ENV_VARS += DOCKER_IMAGE_CLI DOCKER_IMAGE_SSH DOCKER_NAME_CLI DOCKER_NAME_SSH DOCKER_NETWORK_PRIVATE DOCKER_NETWORK_PUBLIC DOCKER_REPOSITORY_USER DOCKER_REPOSITORY_NODE DOCKER_VOLUME_SSH
|
2021-02-09 17:05:00 +01:00
|
|
|
|
|
|
|
ifeq ($(DRONE), true)
|
|
|
|
DOCKER_RUN_OPTIONS := --rm --network $(DOCKER_NETWORK)
|
|
|
|
# When running docker command in drone, we are already in a docker (dind).
|
|
|
|
# Whe need to find the volume mounted in the current docker (runned by drone) to mount it in our docker command.
|
|
|
|
# If we do not mount the volume in our docker, we wont be able to access the files in this volume as the /drone/src directory would be empty.
|
2021-06-14 12:52:48 +02:00
|
|
|
DOCKER_RUN_VOLUME += -v $$(docker inspect $$(basename $$(cat /proc/1/cpuset)) 2>/dev/null |awk 'BEGIN {FS=":"} $$0 ~ /"drone-[a-zA-Z0-9]*:\/drone"$$/ {gsub(/^[ \t\r\n]*"/,"",$$1); print $$1; exit}'):/drone $(if $(wildcard /root/.netrc),-v /root/.netrc:/root/.netrc)
|
2021-02-09 17:05:00 +01:00
|
|
|
else
|
2021-06-14 12:52:48 +02:00
|
|
|
DOCKER_RUN_VOLUME += -v $(or $(APP_PARENT_DIR),$(APP_DIR),$(PWD)):$(or $(WORKSPACE_DIR),$(APP_PARENT_DIR),$(APP_DIR),$(PWD))
|
2021-02-09 17:05:00 +01:00
|
|
|
endif
|
|
|
|
|
2021-06-16 13:19:52 +02:00
|
|
|
ifneq ($(DOCKER_RUN),)
|
2021-02-09 17:05:00 +01:00
|
|
|
|
|
|
|
DOCKER_SSH_AUTH := -e SSH_AUTH_SOCK=/tmp/ssh-agent/socket -v $(DOCKER_VOLUME_SSH):/tmp/ssh-agent
|
|
|
|
|
2021-06-14 12:52:48 +02:00
|
|
|
# function docker-run: Run docker image 2 with arg 1
|
2021-02-09 17:05:00 +01:00
|
|
|
define docker-run
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,docker-run,$(1)$(comma) $(2))
|
2021-06-14 12:52:48 +02:00
|
|
|
$(call run,$(or $(2),$(DOCKER_IMAGE)) $(1))
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
|
|
|
ifeq ($(DRONE), true)
|
2021-06-14 12:52:48 +02:00
|
|
|
# function exec DRONE=true: Run DOCKER_IMAGE with arg 1
|
2021-02-09 17:05:00 +01:00
|
|
|
define exec
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,exec,$(1))
|
2021-06-14 12:52:48 +02:00
|
|
|
$(call run,$(DOCKER_IMAGE) $(or $(1),$(SHELL)))
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
|
|
|
else
|
2021-06-02 00:54:33 +02:00
|
|
|
# function exec: Exec arg 1 in docker DOCKER_NAME
|
2021-02-09 17:05:00 +01:00
|
|
|
define exec
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,exec,$(1))
|
2021-07-12 21:04:06 +02:00
|
|
|
$(RUN) docker exec $(DOCKER_ENV_ARGS) $(DOCKER_EXEC_OPTIONS) $(DOCKER_RUN_WORKDIR) $(DOCKER_NAME) $(or $(1),$(SHELL))
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
|
|
|
endif
|
2021-06-14 12:52:48 +02:00
|
|
|
# function run: Run docker run with arg 1 and docker repository 2
|
|
|
|
## attention: arg 2 should end with slash or space
|
2021-02-09 17:05:00 +01:00
|
|
|
define run
|
2021-06-14 12:52:48 +02:00
|
|
|
$(call INFO,run,$(1)$(comma) $(2))
|
2021-07-12 21:04:06 +02:00
|
|
|
$(RUN) docker run $(DOCKER_ENV_ARGS) $(DOCKER_RUN_OPTIONS) $(DOCKER_RUN_VOLUME) $(DOCKER_RUN_WORKDIR) $(DOCKER_SSH_AUTH) $(2)$(1)
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
SHELL := /bin/bash
|
2021-06-14 12:52:48 +02:00
|
|
|
# function docker-run DOCKER=false: Run docker image 2 with arg 1
|
2021-02-09 17:05:00 +01:00
|
|
|
define docker-run
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,docker-run,$(1)$(comma) $(2))
|
2021-07-12 21:04:06 +02:00
|
|
|
$(RUN) docker run $(DOCKER_ENV_ARGS) $(DOCKER_RUN_OPTIONS) $(DOCKER_RUN_VOLUME) $(DOCKER_RUN_WORKDIR) $(or $(2),$(DOCKER_IMAGE)) $(1)
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
2021-06-14 12:52:48 +02:00
|
|
|
# function exec DOCKER=false: Call env-exec with arg 1 or SHELL
|
2021-02-09 17:05:00 +01:00
|
|
|
define exec
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,exec,$(1))
|
2021-06-09 03:41:47 +02:00
|
|
|
$(call env-exec,$(or $(1),$(SHELL)))
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
2021-06-14 12:52:48 +02:00
|
|
|
# function run DOCKER=false: Call env-run with arg 1
|
2021-02-09 17:05:00 +01:00
|
|
|
define run
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,run,$(1))
|
2021-06-09 03:41:47 +02:00
|
|
|
$(call env-run,$(1))
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2021-06-02 00:54:33 +02:00
|
|
|
# function docker-volume-copy: Copy files from a docker volume to another
|
2021-02-09 17:05:00 +01:00
|
|
|
define docker-volume-copy
|
2021-06-12 03:13:01 +02:00
|
|
|
$(call INFO,docker-volume-copy,$(1)$(comma) $(2))
|
2021-02-09 17:05:00 +01:00
|
|
|
$(eval from := $(1))
|
|
|
|
$(eval to := $(2))
|
2021-06-12 03:13:01 +02:00
|
|
|
$(RUN) docker volume inspect $(from) >/dev/null
|
|
|
|
$(RUN) docker volume inspect $(to) >/dev/null 2>&1 || $(RUN) docker volume create $(to) >/dev/null
|
|
|
|
$(RUN) docker run --rm -v $(from):/from -v $(to):/to alpine ash -c "cd /from; cp -a . /to"
|
2021-02-09 17:05:00 +01:00
|
|
|
endef
|