Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions docker/runtime/doris-compose/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,14 @@ def docker_env(self):
elif self.node_type() == Node.TYPE_BE:
envs["LLVM_PROFILE_FILE_PREFIX"] = outfile

user_envs = getattr(self.cluster, "env", [])
if user_envs:
for env in user_envs:
pos = env.find('=')
if pos == -1:
raise Exception(f"env '{env}' error format, should be like 'name=value'")
envs[env[:pos]] = env[pos+1:]

return envs

def entrypoint(self):
Expand Down Expand Up @@ -488,7 +496,11 @@ def compose(self):
"environment": self.docker_env(),
"image": self.get_image(),
"ulimits": {
"core": -1
"core": -1,
"nofile": {
"soft": 655350,
"hard": 655350,
}
},
"security_opt": ["seccomp:unconfined"],
"volumes": volumes,
Expand Down Expand Up @@ -887,7 +899,7 @@ class Cluster(object):
def __init__(self, name, subnet, image, is_cloud, is_root_user, fe_config,
be_config, ms_config, recycle_config, remote_master_fe,
local_network_ip, fe_follower, be_disks, be_cluster, reg_be,
extra_hosts, coverage_dir, cloud_store_config,
extra_hosts, env, coverage_dir, cloud_store_config,
sql_mode_node_mgr, be_metaservice_endpoint, be_cluster_id, tde_ak, tde_sk,
external_ms_cluster, instance_id, cluster_snapshot=""):
self.name = name
Expand All @@ -906,6 +918,7 @@ def __init__(self, name, subnet, image, is_cloud, is_root_user, fe_config,
self.be_cluster = be_cluster
self.reg_be = reg_be
self.extra_hosts = extra_hosts
self.env = env
self.coverage_dir = coverage_dir
self.cloud_store_config = cloud_store_config
self.external_ms_cluster = external_ms_cluster
Expand All @@ -931,7 +944,7 @@ def __init__(self, name, subnet, image, is_cloud, is_root_user, fe_config,
@staticmethod
def new(name, image, is_cloud, is_root_user, fe_config, be_config,
ms_config, recycle_config, remote_master_fe, local_network_ip,
fe_follower, be_disks, be_cluster, reg_be, extra_hosts,
fe_follower, be_disks, be_cluster, reg_be, extra_hosts, env,
coverage_dir, cloud_store_config, sql_mode_node_mgr,
be_metaservice_endpoint, be_cluster_id, tde_ak, tde_sk,
external_ms_cluster, instance_id, cluster_snapshot=""):
Expand All @@ -946,7 +959,7 @@ def new(name, image, is_cloud, is_root_user, fe_config, be_config,
cluster = Cluster(name, subnet, image, is_cloud, is_root_user,
fe_config, be_config, ms_config, recycle_config,
remote_master_fe, local_network_ip, fe_follower,
be_disks, be_cluster, reg_be, extra_hosts,
be_disks, be_cluster, reg_be, extra_hosts, env,
coverage_dir, cloud_store_config,
sql_mode_node_mgr, be_metaservice_endpoint,
be_cluster_id, tde_ak, tde_sk, external_ms_cluster,
Expand Down
10 changes: 9 additions & 1 deletion docker/runtime/doris-compose/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,14 @@ def add_parser(self, args_parsers):
"Add custom host-to-IP mappings (host:ip). For example: --extra-hosts myhost1:192.168.10.1 myhost2:192.168.10.2 . Only use when creating new cluster."
)

parser.add_argument(
"--env",
nargs="*",
type=str,
help=
"Add environment variables. For example: --env KEY1=VALUE1 KEY2=VALUE2. Only use when creating new cluster."
)

parser.add_argument("--coverage-dir",
default="",
help="Set code coverage output directory")
Expand Down Expand Up @@ -657,7 +665,7 @@ def run(self, args):
args.NAME, args.IMAGE, args.cloud, args.root, args.fe_config,
args.be_config, args.ms_config, args.recycle_config,
args.remote_master_fe, args.local_network_ip, args.fe_follower,
args.be_disks, args.be_cluster, args.reg_be, args.extra_hosts,
args.be_disks, args.be_cluster, args.reg_be, args.extra_hosts, args.env,
args.coverage_dir, cloud_store_config, args.sql_mode_node_mgr,
args.be_metaservice_endpoint, args.be_cluster_id, args.tde_ak, args.tde_sk,
external_ms_cluster, instance_id, cluster_snapshot)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ class ClusterOptions {
// just as `docker run --add-host myhost:192.168.10.10` do.
List<String> extraHosts = []

// environment variables, each environment should be 'name=value'
List<String> environments = []

boolean connectToFollower = false

// 1. cloudMode = true, only create cloud cluster.
Expand Down Expand Up @@ -365,6 +368,10 @@ class SuiteCluster {
cmd += ['--extra-hosts']
cmd += options.extraHosts
}
if (!options.environments.isEmpty()) {
cmd += ['--env']
cmd += options.environments
}
if (config.dockerCoverageOutputDir != null && config.dockerCoverageOutputDir != '') {
cmd += ['--coverage-dir', config.dockerCoverageOutputDir]
}
Expand Down
4 changes: 2 additions & 2 deletions regression-test/suites/demo_p0/docker_action.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
// specific language governing permissions and limitations
// under the License.

import org.apache.doris.regression.suite.ClusterOptions

// Every docker suite will connect to a docker cluster.
// The docker cluster is new created and independent, not contains history data,
// not affect the external doris cluster, not affect other docker cluster.
Expand Down Expand Up @@ -63,6 +61,8 @@ import org.apache.doris.regression.suite.ClusterOptions
// On the contrary, `ClusterOptions.cloudMode = true/false` no need specific -runMode=cloud/not_cloud when no external doris cluster exists.
// 3. For more options and functions usage, read the file `suite/SuiteCluster.groovy` in regression framework.

import org.apache.doris.regression.suite.ClusterOptions

suite('docker_action', 'docker') {
// run a new docker
docker {
Expand Down