create-indiekit
Version:
Get started with Indiekit
72 lines (63 loc) • 1.78 kB
JavaScript
import YAML from "yaml";
import { getPlugin } from "./utils.js";
/**
* Get Docker Compose file contents
* @param {Array} environment - Environment variables
* @returns {string} Docker Compose file contents
*/
export const getDockerComposeFileContent = (environment) => {
const compose = {
version: "3.9",
services: {
indiekit: {
container_name: "indiekit",
image: "getindiekit/indiekit",
restart: "always",
build: ".",
ports: ["${HTTP_PORT:-3000}:3000"],
environment: [
"MONGO_URL=mongodb://$MONGO_INITDB_ROOT_USERNAME:$MONGO_INITDB_ROOT_PASSWORD@mongo",
"PASSWORD_SECRET",
"SECRET",
...environment,
],
},
mongo: {
container_name: "mongo",
image: "mongo:4",
restart: "always",
volumes: ["mongo:/data/db"],
environment: [
"MONGO_INITDB_ROOT_USERNAME",
"MONGO_INITDB_ROOT_PASSWORD",
],
},
},
volumes: {
mongo: {
external: true,
},
},
};
return YAML.stringify(compose);
};
/**
* Get environment variables required by plug-ins
* @param {object} setup - Setup answers
* @returns {Promise<Array>} Environment variables
*/
export const getDockerEnvironment = async (setup) => {
const { storePlugin, syndicatorPlugins } = setup;
let variables = [];
if (storePlugin) {
const { environment } = await getPlugin(storePlugin);
variables = [...variables, ...(environment || [])];
}
if (syndicatorPlugins) {
for await (const syndicatorPlugin of syndicatorPlugins) {
const { environment } = await getPlugin(syndicatorPlugin);
variables = [...variables, ...(environment || [])];
}
}
return variables;
};