001package io.ebean.docker.commands;
002
003import java.util.ArrayList;
004import java.util.List;
005import java.util.Properties;
006
007/**
008 * Creates Yugabyte container (with common commands for roles and database as Postgres).
009 */
010public class YugabyteContainer extends BasePostgresContainer {
011
012  /**
013   * Create Yugabyte container with configuration from properties.
014   */
015  public static YugabyteContainer create(String version, Properties properties) {
016    return new YugabyteContainer(new YugabyteConfig(version, properties));
017  }
018
019  public YugabyteContainer(YugabyteConfig config) {
020    super(config);
021  }
022
023  @Override
024  protected ProcessBuilder runProcess() {
025    List<String> args = new ArrayList<>();
026    args.add(config.docker);
027    args.add("run");
028    args.add("-d");
029    args.add("--name");
030    args.add(config.containerName());
031    args.add("-p");
032    args.add(config.getPort() + ":" + config.getInternalPort());
033    args.add("-p");
034    args.add("7000:7000");
035    args.add("-p");
036    args.add("9000:9000");
037    args.add("-p");
038    args.add("9042:9042");
039//    if (dbConfig.isInMemory() && dbConfig.getTmpfs() != null) {
040//      args.add("--tmpfs");
041//      args.add(dbConfig.getTmpfs());
042//    }
043//    if (!dbConfig.adminPassword.isEmpty()) {
044//      args.add("-e");
045//      args.add("POSTGRES_PASSWORD=" + dbConfig.getAdminPassword());
046//    }
047    args.add(config.getImage());
048    args.add("bin/yugabyted");
049    args.add("start");
050    // args.add("--base_dir=/home/yugabyte/yb_data");
051    args.add("--daemon=false");
052    return createProcessBuilder(args);
053  }
054}