mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
armbian-next: docker: implement docker-purge and docker-shell cli commands; deprecated mountpoints
This commit is contained in:
@@ -28,6 +28,22 @@ function cli_docker_run() {
|
||||
declare -g SKIP_LOG_ARCHIVE=yes # Don't archive logs in the parent instance either.
|
||||
|
||||
declare -g ARMBIAN_CLI_RELAUNCH_ARGS=()
|
||||
produce_relaunch_parameters # produces ARMBIAN_CLI_RELAUNCH_ARGS
|
||||
docker_cli_launch "${ARMBIAN_CLI_RELAUNCH_ARGS[@]}" # MARK: this "re-launches" using the passed params.
|
||||
produce_relaunch_parameters # produces ARMBIAN_CLI_RELAUNCH_ARGS
|
||||
|
||||
case "${DOCKER_SUBCMD}" in
|
||||
shell)
|
||||
display_alert "Launching Docker shell" "docker-shell" "info"
|
||||
docker run -it "${DOCKER_ARGS[@]}" "${DOCKER_ARMBIAN_INITIAL_IMAGE_TAG}" /bin/bash
|
||||
;;
|
||||
|
||||
purge)
|
||||
display_alert "Purging unused Docker volumes" "docker-purge" "info"
|
||||
docker_purge_deprecated_volumes
|
||||
;;
|
||||
|
||||
*)
|
||||
docker_cli_launch "${ARMBIAN_CLI_RELAUNCH_ARGS[@]}" # MARK: this "re-launches" using the passed params.
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
function armbian_register_commands() {
|
||||
# More than one command can map to the same handler. In that case, use ARMBIAN_COMMANDS_TO_VARS_DICT for specific vars.
|
||||
declare -g -A ARMBIAN_COMMANDS_TO_HANDLERS_DICT=(
|
||||
["docker"]="docker" # thus requires cli_docker_pre_run and cli_docker_run
|
||||
["docker-purge"]="docker" # idem @TODO unimplemented!!!
|
||||
["dockerpurge"]="docker" # idem @TODO unimplemented!!!
|
||||
["docker-shell"]="docker" # idem @TODO unimplemented!!!
|
||||
["dockershell"]="docker" # idem @TODO unimplemented!!!
|
||||
["generate-dockerfile"]="docker" # idem
|
||||
["docker"]="docker" # thus requires cli_docker_pre_run and cli_docker_run
|
||||
["docker-purge"]="docker"
|
||||
["dockerpurge"]="docker"
|
||||
["docker-shell"]="docker"
|
||||
["dockershell"]="docker"
|
||||
["generate-dockerfile"]="docker"
|
||||
|
||||
["vagrant"]="vagrant" # thus requires cli_vagrant_pre_run and cli_vagrant_run
|
||||
|
||||
@@ -25,10 +25,10 @@ function armbian_register_commands() {
|
||||
|
||||
# Vars to be set for each command. Optional.
|
||||
declare -g -A ARMBIAN_COMMANDS_TO_VARS_DICT=(
|
||||
["docker-purge"]="DOCKER_SUBCMD='purge'" # @TODO unimplemented!
|
||||
["dockerpurge"]="DOCKER_SUBCMD='purge'" # @TODO unimplemented!
|
||||
["docker-shell"]="DOCKER_SUBCMD='shell'" # @TODO unimplemented!
|
||||
["dockershell"]="DOCKER_SUBCMD='shell'" # @TODO unimplemented!
|
||||
["docker-purge"]="DOCKER_SUBCMD='purge'"
|
||||
["dockerpurge"]="DOCKER_SUBCMD='purge'"
|
||||
["docker-shell"]="DOCKER_SUBCMD='shell'"
|
||||
["dockershell"]="DOCKER_SUBCMD='shell'"
|
||||
|
||||
["generate-dockerfile"]="DOCKERFILE_GENERATE_ONLY='yes'"
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ function docker_cli_prepare() {
|
||||
# Prepare some dependencies; these will be used on the Dockerfile
|
||||
|
||||
enable_all_extensions_builtin_and_user
|
||||
initialize_extension_manager # initialize the extension manager.
|
||||
initialize_extension_manager # initialize the extension manager.
|
||||
declare -a -g host_dependencies=()
|
||||
early_prepare_host_dependencies
|
||||
display_alert "Pre-game dependencies" "${host_dependencies[*]}" "debug"
|
||||
@@ -290,7 +290,7 @@ function docker_cli_prepare_launch() {
|
||||
|
||||
# Pass env var ARMBIAN_RUNNING_IN_CONTAINER to indicate we're running under Docker. This is also set in the Dockerfile; make sure.
|
||||
"--env" "ARMBIAN_RUNNING_IN_CONTAINER=yes"
|
||||
|
||||
|
||||
# This env var is used super early (in entrypoint.sh), so set it as an env to current value.
|
||||
"--env" "ARMBIAN_ENABLE_CALL_TRACING=${DOCKER_ARMBIAN_ENABLE_CALL_TRACING:-no}"
|
||||
|
||||
@@ -418,6 +418,21 @@ function docker_cli_show_armbian_volumes_disk_usage_internal() {
|
||||
fi
|
||||
}
|
||||
|
||||
function docker_purge_deprecated_volumes() {
|
||||
prepare_armbian_mountpoints_description_dict
|
||||
local mountpoint=""
|
||||
for mountpoint in "${ARMBIAN_MOUNTPOINTS_DEPRECATED[@]}"; do
|
||||
local volume_id="armbian-${mountpoint//\//-}"
|
||||
display_alert "Purging deprecated Docker volume" "${volume_id}" "info"
|
||||
if docker volume inspect "${volume_id}" &> /dev/null; then
|
||||
run_host_command_logged docker volume rm "${volume_id}"
|
||||
display_alert "Purged deprecated Docker volume" "${volume_id} OK" "info"
|
||||
else
|
||||
display_alert "Deprecated Docker volume not found" "${volume_id} OK" "info"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Leftovers from original Dockerfile before rewrite
|
||||
## OLD DOCKERFILE ## RUN locale-gen en_US.UTF-8
|
||||
## OLD DOCKERFILE ##
|
||||
|
||||
@@ -28,6 +28,11 @@ function prepare_armbian_mountpoints_description_dict() {
|
||||
["cache/sources/linux-kernel"]="docker_kind_linux=bind docker_kind_darwin=namedvolume" # working tree for kernel builds. huge. contains both sources and the built object files. needs to be local to the container, so it's a volume by default. On Linux, it's a bind-mount by default.
|
||||
["cache/ccache"]="docker_kind_linux=bind docker_kind_darwin=namedvolume" # ccache object store. limited to 5gb by default. needs to be local to the container, so it's a volume by default. On Linux, it's a bind-mount by default.
|
||||
)
|
||||
|
||||
# These, if found, will be removed on `dockerpurge` and other cleanups.
|
||||
# They "used to be" used by the build system, but no longer.
|
||||
declare -g -a ARMBIAN_MOUNTPOINTS_DEPRECATED=(
|
||||
)
|
||||
}
|
||||
|
||||
function loop_over_armbian_mountpoints() {
|
||||
|
||||
Reference in New Issue
Block a user