在Docker中运行Bazel,在一个可复制的便携式容器中。

dazel的Python项目详细描述


通过无缝代理在Docker容器中运行Google的Bazel。

Bazel在自己的基础上创建快速且可复制的构建方面非常出色 发展环境。问题是它在一个不完美的 以及非便携环境。

输入dazel。

Dazel允许您创建一个Docker映像的构建环境, 通过dockerfile或预先构建的存储库。工具本身是 直接将命令行参数发送到 容器中的bazel,并将所有必需的卷映射到 让它与你无缝连接。它使用“docker exec”命令来实现 然后映射当前目录和bazel workdir链接 使结果显示在主机上,就像运行 主机上的本地命令。

它的运行方式与bazel相同:

dazel build //my/cool/package/...
dazel run //my/cool/package:target

这是一个简单的构建和运行。命令行参数已发送 在Docker容器中,输出在同一个 容器内的方式。

第一次运行该命令将启动 拥有,它将自动检测是否需要重建或 重新启动容器(如果dockerfile比conatiner新)。 您可以通过中的“.dazelrc”文件配置所需的任何内容。 相同的目录。查看配置部分以获取信息 关于如何写一个。

安装

依赖性

apt-get install python python-pip
apt-get install docker-ce

安装Dazel

pip install dazel

就这些了。连火箭筒都不需要!

配置

您可以通过两种方式(或组合)配置dazel:*a.dazelrc文件 当前目录。*具有配置的环境变量 下面提到的参数。

注意,特定的环境变量取代了 .dazelrc文件。

可能要设置的参数有(默认值):

# The name of the docker container to run.DAZEL_INSTANCE_NAME="dazel"# The name of the dazel image to build or pull.DAZEL_IMAGE_NAME="dazel"# The command to run when running the image (the continuous command that will# hold the container active while we connect to it).DAZEL_RUN_COMMAND="/bin/bash"# The command to run to invoke docker (can be changed to `nvidia-docker` for GPUs).DAZEL_DOCKER_COMMAND="docker"# The path to the Dockerfile to use to build the dazel image.DAZEL_DOCKERFILE="Dockerfile.dazel"# in DAZEL_DIRECTORY# The repository to pull the dazel image from.DAZEL_REPOSITORY="dazel"# The directory to build the dazel image in.DAZEL_DIRECTORY=$PWD# The command to run inside the container.# NOTE: You should add flags to the .bazelrc file instead of here, since it is#       also shared in the volume and it is a much cleaner way.DAZEL_COMMAND="/usr/bin/bazel"# Add any additional volumes you want to share between the host and the docker# container, in the normal "hostdir:dockerdir" format.# This can be a python iterable, or a comma-separated string.DAZEL_VOLUMES=[]# Add any ports you want to publish from the dazel container to the host, in the# normal "interface:dockerport:hostport" (e.g. "0.0.0.0:80:80").# This can be useful if you use the "dazel run //my/cool/webserver/target"# command for example, and need to publish port 80.DAZEL_PORTS=[]# The name of the network on which to load all run dependencies and dazel container.# If you are using a docker-compose.yml file to load the environment, this must# be the network name to which all of the necessary dependencies are connected.DAZEL_NETWORK="dazel"# Add any additional images that you want to run as dependencies and hook up to# the same docker network as the main container.# The format is the standard "repository/image:tag", but you can optionally add# the name of the container to create with "repository/image:tag::container".# This is useful if you want to add "postgres" or "rabbitmq" for instance, and# have them run as part of your test environment in a seamless reproducible way.# This can be a python iterable, or a comma-separated string.# Note: alternatively, you can use a docker-compose.yml file for dependencies.DAZEL_RUN_DEPS=[]# Add a docker-compose.yml file here to use it to load any services you want to# launch as part of the environment for running bazel.# This can be a much more complex environment than what is possible using run# dependencies.# Note: you can control both the project name and which services to run with the# variables below.DAZEL_DOCKER_COMPOSE_FILE=""# The command to run to invoke docker-compose (can be changed to# `nvidia-docker-compose` for GPUs).DAZEL_DOCKER_COMPOSE_COMMAND="docker-compose"# If using a docker-compose.yml file, this will set the COMPOSE_PROJECT_NAME# environment variable and thus the project name.DAZEL_DOCKER_COMPOSE_PROJECT_NAME="dazel"# If using a docker-compose.yml file, you can specify the services to run in the# file (and empty string means all services - as in running: docker-compose up).# This can be a python iterable, or a comma-separated string.DAZEL_DOCKER_COMPOSE_SERVICES=""# Whether or not to run in privileged mode (fixes bazel sandboxing issues on some# systems). Note that this can be a python boolean equivalent, so if setting# this from the environment, simply set it to an empty string.DAZEL_DOCKER_RUN_PRIVILEGED=False# Path to custom .bazelrc file to use when running the bazel commands.DAZEL_BAZEL_RC_FILE=""# Use the :delegated flag of the --volume option of docker for the bind-mounting of# the bazel cache directory. This vastly improves throughput on MacOSX.# More information on the :delegated flag: https://docs.docker.com/docker-for-mac/osxfs-caching/.# NOTE: This will fail on Docker versions < 17.04.DAZEL_DELEGATED_VOLUME=True# The user, in the same format as the --user option docker run and docker exec takes,# to use when starting the container and executing commands inside of the containerDAZEL_USER=""

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?