@forge/cli-shared
8.12.08.12.1-next.0
out/tunnel/docker-compose-lifecycle.jsout/tunnel/docker-compose-lifecycle.js+21−2
Index: package/out/tunnel/docker-compose-lifecycle.js
===================================================================
--- package/out/tunnel/docker-compose-lifecycle.js
+++ package/out/tunnel/docker-compose-lifecycle.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.stopDockerComposeStack = exports.startDockerComposeStack = exports.deleteDockerComposeFile = exports.generateContainersDockerComposeFile = exports.DockerUnableToStartError = exports.DockerUnableToPullProxySidecarImage = exports.InvalidContainerServicePort = exports.K8S_AUTH_TOKEN_FILENAME = exports.CONTAINER_SERVICE_ASSETS = exports.PROXY_SIDECAR_VOLUME_DIR = void 0;
+exports.stopDockerComposeStack = exports.startDockerComposeStack = exports.deleteDockerComposeFile = exports.generateContainersDockerComposeFile = exports.CannotUseBothImageAndBuildContextError = exports.MissingImageOrBuildContextError = exports.DockerUnableToStartError = exports.DockerUnableToPullProxySidecarImage = exports.InvalidContainerServicePort = exports.K8S_AUTH_TOKEN_FILENAME = exports.CONTAINER_SERVICE_ASSETS = exports.PROXY_SIDECAR_VOLUME_DIR = void 0;
const tslib_1 = require("tslib");
const fs = tslib_1.__importStar(require("fs"));
const path = tslib_1.__importStar(require("path"));
const yaml = tslib_1.__importStar(require("yaml"));
@@ -31,8 +31,20 @@
super(text_1.Text.tunnel.unableToStartDockerComposeStack(err?.message ?? 'Unknown Error Occurred.'));
}
}
exports.DockerUnableToStartError = DockerUnableToStartError;
+class MissingImageOrBuildContextError extends shared_1.UserError {
+ constructor(containerKey) {
+ super(text_1.Text.tunnel.missingImageOrBuildContext(containerKey));
+ }
+}
+exports.MissingImageOrBuildContextError = MissingImageOrBuildContextError;
+class CannotUseBothImageAndBuildContextError extends shared_1.UserError {
+ constructor(containerKey) {
+ super(text_1.Text.tunnel.cannotUseBothImageAndBuildContext(containerKey));
+ }
+}
+exports.CannotUseBothImageAndBuildContextError = CannotUseBothImageAndBuildContextError;
const generateContainersDockerComposeFile = async (services, appId, envId) => {
const filesGenerated = {};
for (const service of services) {
const { key: serviceKey, containers } = service;
@@ -42,8 +54,14 @@
if (!port || port < 1024 || port > 49152) {
throw new InvalidContainerServicePort(serviceKey);
}
const containerConfig = Object.fromEntries(containersWithTunnelConfig.map((container) => {
+ if (!container.tunnel?.docker?.image && !container.tunnel?.docker?.build) {
+ throw new MissingImageOrBuildContextError(container.key);
+ }
+ else if (container.tunnel?.docker?.image && container.tunnel?.docker?.build) {
+ throw new CannotUseBothImageAndBuildContextError(container.key);
+ }
const config = {
container_name: container.key,
...container.tunnel?.docker,
depends_on: [PROXY_SIDECAR_SERVICE_NAME]
@@ -145,9 +163,10 @@
await (0, docker_compose_1.upAll)({
cwd: path.dirname(dockerComposeFilePath),
log: true,
config: dockerComposeFilePath,
- composeOptions: [`-p${serviceKey}`]
+ composeOptions: [`-p${serviceKey}`],
+ commandOptions: ['--build']
});
}
catch (err) {
throw new DockerUnableToStartError(err);