blob: 382407cc8fbeb910d3e0d029fb643940c0145698 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
set(IMPALA_BASE_BUILD_CONTEXT_DIR
${CMAKE_SOURCE_DIR}/docker/build_context
)
set(IMPALA_BASE_BUILD_CONTEXT_TIMESTAMP
${IMPALA_BASE_BUILD_CONTEXT_DIR}/.timestamp
)
# Build context depends on daemons, frontend jars and test configurations.
# Sending the whole impala workspace including test binaries, testdata, etc
# to the docker daemon can be very expensive, so we create a build context
# with symlinks
add_custom_command(
OUTPUT ${IMPALA_BASE_BUILD_CONTEXT_TIMESTAMP}
COMMAND ${CMAKE_SOURCE_DIR}/docker/setup_build_context.py
COMMAND touch ${IMPALA_BASE_BUILD_CONTEXT_TIMESTAMP}
DEPENDS daemons fe ${CMAKE_SOURCE_DIR}/docker/setup_build_context.py
DEPENDS ${CMAKE_SOURCE_DIR}/fe/src/test/resources/.test_config_timestamp
COMMENT "Creating impala base build context."
VERBATIM
)
# Command and target for the base Impala image.
set(IMPALA_BASE_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.impala_base_image_timestamp
)
add_custom_command(
OUTPUT ${IMPALA_BASE_IMAGE_TIMESTAMP}
# Use tar with -h flag to assemble a tarball including all the symlinked files and
# directories in the build context.
COMMAND cd ${IMPALA_BASE_BUILD_CONTEXT_DIR} && tar cvh . | docker build -t impala_base -
COMMAND touch ${IMPALA_BASE_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_BUILD_CONTEXT_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/impala_base/Dockerfile
DEPENDS ${CMAKE_SOURCE_DIR}/docker/daemon_entrypoint.sh
COMMENT "Building Impala base docker image."
VERBATIM
)
add_custom_target(impala_base_image
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP}
)
# Command and target for the various Impalad images.
set(COORD_EXEC_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.coord_exec_image_timestamp
)
add_custom_command(
OUTPUT ${COORD_EXEC_IMAGE_TIMESTAMP}
COMMAND cd ${CMAKE_SOURCE_DIR}/docker/coord_exec && docker build -t impalad_coord_exec .
COMMAND touch ${COORD_EXEC_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/coord_exec/Dockerfile
COMMENT "Building Impalad Coord Exec docker image."
VERBATIM
)
add_custom_target(coord_exec_image
DEPENDS ${COORD_EXEC_IMAGE_TIMESTAMP}
)
set(COORDINATOR_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.coordinator_image_timestamp
)
add_custom_command(
OUTPUT ${COORDINATOR_IMAGE_TIMESTAMP}
COMMAND cd ${CMAKE_SOURCE_DIR}/docker/coordinator && docker build -t impalad_coordinator .
COMMAND touch ${COORDINATOR_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/coordinator/Dockerfile
COMMENT "Building Impalad Coordinator docker image."
VERBATIM
)
add_custom_target(coordinator_image
DEPENDS ${COORDINATOR_IMAGE_TIMESTAMP}
)
set(EXECUTOR_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.executor_image_timestamp
)
add_custom_command(
OUTPUT ${EXECUTOR_IMAGE_TIMESTAMP}
COMMAND cd ${CMAKE_SOURCE_DIR}/docker/executor && docker build -t impalad_executor .
COMMAND touch ${EXECUTOR_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/executor/Dockerfile
COMMENT "Building Impalad Executor docker image."
VERBATIM
)
add_custom_target(executor_image
DEPENDS ${EXECUTOR_IMAGE_TIMESTAMP}
)
# Command and target for the Statestored image.
set(STATESTORED_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.statestored_image_timestamp
)
add_custom_command(
OUTPUT ${STATESTORED_IMAGE_TIMESTAMP}
COMMAND cd ${CMAKE_SOURCE_DIR}/docker/statestored && docker build -t statestored .
COMMAND touch ${STATESTORED_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/statestored/Dockerfile
COMMENT "Building Statestored docker image."
VERBATIM
)
add_custom_target(statestored_image
DEPENDS ${STATESTORED_IMAGE_TIMESTAMP}
)
# Command and target for the Catalogd image.
set(CATALOGD_IMAGE_TIMESTAMP
${CMAKE_SOURCE_DIR}/docker/.catalogd_image_timestamp
)
add_custom_command(
OUTPUT ${CATALOGD_IMAGE_TIMESTAMP}
COMMAND cd ${CMAKE_SOURCE_DIR}/docker/catalogd && docker build -t catalogd .
COMMAND touch ${CATALOGD_IMAGE_TIMESTAMP}
DEPENDS ${IMPALA_BASE_IMAGE_TIMESTAMP} ${CMAKE_SOURCE_DIR}/docker/catalogd/Dockerfile
COMMENT "Building Catalogd docker image."
VERBATIM
)
add_custom_target(catalogd_image
DEPENDS ${CATALOGD_IMAGE_TIMESTAMP}
)
add_custom_target(docker_images
DEPENDS coord_exec_image coordinator_image executor_image
DEPENDS statestored_image catalogd_image
)