Skip to content

Commit

Permalink
Move rocks building in build phase
Browse files Browse the repository at this point in the history
  • Loading branch information
ArtDu committed May 5, 2023
1 parent dda7e9c commit 2f779f2
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 21 deletions.
Expand Up @@ -184,7 +184,7 @@ public TarantoolCartridgeContainer(String dockerFile, String buildImageName,
*/
public TarantoolCartridgeContainer(String dockerFile, String buildImageName, String instancesFile,
String topologyConfigurationFile, final Map<String, String> buildArgs) {
this(buildImage(dockerFile, buildImageName), instancesFile, topologyConfigurationFile, buildArgs);
this(buildImage(dockerFile, buildImageName, buildArgs), instancesFile, topologyConfigurationFile, buildArgs);
}

private TarantoolCartridgeContainer(ImageFromDockerfile image, String instancesFile, String topologyConfigurationFile,
Expand Down Expand Up @@ -236,12 +236,17 @@ private static Map<String, String> mergeBuildArguments(Map<String, String> build
return args;
}

private static ImageFromDockerfile buildImage(String dockerFile, String buildImageName) {
private static ImageFromDockerfile buildImage(String dockerFile, String buildImageName,
final Map<String, String> buildArgs) {
ImageFromDockerfile image;
if (buildImageName != null && !buildImageName.isEmpty()) {
return new ImageFromDockerfile(buildImageName, false)
.withFileFromClasspath("Dockerfile", dockerFile);
image = new ImageFromDockerfile(buildImageName, false);
} else {
image = new ImageFromDockerfile();
}
return new ImageFromDockerfile().withFileFromClasspath("Dockerfile", dockerFile);
return image.withFileFromClasspath("Dockerfile", dockerFile)
.withFileFromClasspath("cartridge", buildArgs.get("CARTRIDGE_SRC_DIR") == null ?
"cartridge" : buildArgs.get("CARTRIDGE_SRC_DIR"));
}

/**
Expand Down
31 changes: 18 additions & 13 deletions src/main/resources/Dockerfile
@@ -1,21 +1,26 @@
ARG TARANTOOL_VERSION=2.10.5
FROM tarantool/tarantool:${TARANTOOL_VERSION}-centos7 AS tarantool-base
FROM tarantool/tarantool:${TARANTOOL_VERSION}-centos7 AS cartridge-base

# system preparations because docker mount directory as a root
ARG TARANTOOL_SERVER_USER="root"
ARG TARANTOOL_SERVER_GROUP="root"
ARG TARANTOOL_WORKDIR="/app"
ARG TARANTOOL_RUNDIR="/tmp/run"
ARG TARANTOOL_DATADIR="/tmp/data"
ARG TARANTOOL_INSTANCES_FILE="./instances.yml"
ENV TARANTOOL_WORKDIR=$TARANTOOL_WORKDIR
ENV TARANTOOL_RUNDIR=$TARANTOOL_RUNDIR
ENV TARANTOOL_DATADIR=$TARANTOOL_DATADIR
ENV TARANTOOL_INSTANCES_FILE=$TARANTOOL_INSTANCES_FILE
USER $TARANTOOL_SERVER_USER:$TARANTOOL_SERVER_GROUP
RUN groupadd $TARANTOOL_SERVER_GROUP && useradd -m -s /bin/bash $TARANTOOL_SERVER_USER || true

# install dependencies
RUN yum -y install cmake make gcc gcc-c++ git unzip cartridge-cli && \
yum clean all
RUN groupadd $TARANTOOL_SERVER_GROUP && useradd -m -s /bin/bash $TARANTOOL_SERVER_USER || true
USER $TARANTOOL_SERVER_USER:$TARANTOOL_SERVER_GROUP
RUN cartridge version

FROM tarantool-base AS cartridge-base
# build
ARG CARTRIDGE_SRC_DIR="cartridge"
ARG TARANTOOL_WORKDIR="/app"
COPY $CARTRIDGE_SRC_DIR $TARANTOOL_WORKDIR
WORKDIR $TARANTOOL_WORKDIR
CMD cartridge build && cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR --cfg=$TARANTOOL_INSTANCES_FILE
RUN cartridge build --verbose

ENV TARANTOOL_RUNDIR="/tmp/run"
ENV TARANTOOL_DATADIR="/tmp/data"
ENV TARANTOOL_INSTANCES_FILE="./instances.yml"

CMD cartridge start --run-dir=$TARANTOOL_RUNDIR --data-dir=$TARANTOOL_DATADIR --cfg=$TARANTOOL_INSTANCES_FILE
Expand Up @@ -21,8 +21,7 @@ public class TarantoolCartridgeBootstrapFromLuaWithFixedPortsTest {
"Dockerfile",
"cartridge/instances_fixedport.yml",
"cartridge/topology_fixedport.lua")
.withCopyFileToContainer(MountableFile.forClasspathResource("cartridge"), "/app")
.withCopyFileToContainer(MountableFile.forClasspathResource("cartridge/instances_fixedport.yml"),"/app/instances.yml")
.withEnv("TARANTOOL_INSTANCES_FILE", "instances_fixedport.yml")
.withStartupTimeout(Duration.ofSeconds(300))
.withUseFixedPorts(true)
.withAPIPort(18081)
Expand Down
Expand Up @@ -23,7 +23,6 @@ public class TarantoolCartridgeBootstrapFromYamlTest {
"Dockerfile",
"cartridge/instances.yml",
"cartridge/replicasets.yml")
.withCopyFileToContainer(MountableFile.forClasspathResource("cartridge"), "/app")
.withStartupTimeout(Duration.ofSeconds(300))
.withLogConsumer(new Slf4jLogConsumer(
LoggerFactory.getLogger(TarantoolCartridgeBootstrapFromYamlTest.class)));
Expand Down

0 comments on commit 2f779f2

Please sign in to comment.