diff --git a/Dockerfile b/Dockerfile
index 6638bb202..adcbee05b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -22,7 +22,7 @@ ARG DOCKER_VERSION=20.10.18
# Reverted to 2.6.1 because of this https://github.com/docker/compose/issues/9704. 2.9.0 still has a bug.
ARG DOCKER_COMPOSE_VERSION=2.6.1
# https://github.com/buildpacks/pack/releases
-ARG PACK_VERSION=v0.27.0
+ARG PACK_VERSION=0.27.0
RUN apt update && apt -y install --no-install-recommends ca-certificates git git-lfs openssh-client curl jq cmake sqlite3 openssl psmisc python3
RUN apt-get clean autoclean && apt-get autoremove --yes && rm -rf /var/lib/{apt,dpkg,cache,log}/
@@ -50,4 +50,4 @@ RUN pnpm install -p
EXPOSE 3000
ENV CHECKPOINT_DISABLE=1
-CMD pnpm start
\ No newline at end of file
+CMD pnpm start
diff --git a/Dockerfile-dev b/Dockerfile-dev
index 198307656..13b3a8560 100644
--- a/Dockerfile-dev
+++ b/Dockerfile-dev
@@ -9,7 +9,7 @@ ARG DOCKER_VERSION=20.10.18
# Reverted to 2.6.1 because of this https://github.com/docker/compose/issues/9704. 2.9.0 still has a bug.
ARG DOCKER_COMPOSE_VERSION=2.6.1
# https://github.com/buildpacks/pack/releases
-ARG PACK_VERSION=v0.27.0
+ARG PACK_VERSION=0.27.0
WORKDIR /app
RUN npm --no-update-notifier --no-fund --global install pnpm@${PNPM_VERSION}
@@ -28,4 +28,4 @@ RUN curl -SL https://cdn.coollabs.io/bin/$TARGETPLATFORM/pack-$PACK_VERSION -o /
RUN chmod +x ~/.docker/cli-plugins/docker-compose /usr/bin/docker /usr/local/bin/pack
EXPOSE 3000
-ENV CHECKPOINT_DISABLE=1
\ No newline at end of file
+ENV CHECKPOINT_DISABLE=1
diff --git a/README.md b/README.md
index 4986cd150..3628d68fd 100644
--- a/README.md
+++ b/README.md
@@ -153,3 +153,6 @@ Support this project with your organization. Your logo will show up here with a
+## Star History
+
+[](https://star-history.com/#coollabsio/coolify&Date)
diff --git a/apps/api/src/lib/buildPacks/compose.ts b/apps/api/src/lib/buildPacks/compose.ts
index 9e3ab12cb..439462231 100644
--- a/apps/api/src/lib/buildPacks/compose.ts
+++ b/apps/api/src/lib/buildPacks/compose.ts
@@ -95,7 +95,7 @@ export default async function (data) {
value['volumes'].push(volume);
}
}
- if (dockerComposeConfiguration[key].port) {
+ if (dockerComposeConfiguration[key]?.port) {
value['expose'] = [dockerComposeConfiguration[key].port];
}
if (value['networks']?.length > 0) {
diff --git a/apps/api/src/lib/buildPacks/gatsby.ts b/apps/api/src/lib/buildPacks/gatsby.ts
index fbb0a933f..e630518cb 100644
--- a/apps/api/src/lib/buildPacks/gatsby.ts
+++ b/apps/api/src/lib/buildPacks/gatsby.ts
@@ -8,7 +8,7 @@ const createDockerfile = async (data, imageforBuild): Promise => {
Dockerfile.push(`FROM ${imageforBuild}`);
Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.buildId=${buildId}`);
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
diff --git a/apps/api/src/lib/buildPacks/nestjs.ts b/apps/api/src/lib/buildPacks/nestjs.ts
index 90c99301b..88b48e6fe 100644
--- a/apps/api/src/lib/buildPacks/nestjs.ts
+++ b/apps/api/src/lib/buildPacks/nestjs.ts
@@ -12,7 +12,7 @@ const createDockerfile = async (data, image): Promise => {
if (isPnpm) {
Dockerfile.push('RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7');
}
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${baseDirectory || ''} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
Dockerfile.push(`EXPOSE ${port}`);
Dockerfile.push(`CMD ${startCommand}`);
diff --git a/apps/api/src/lib/buildPacks/nextjs.ts b/apps/api/src/lib/buildPacks/nextjs.ts
index 957dc5bce..cc7fe36b4 100644
--- a/apps/api/src/lib/buildPacks/nextjs.ts
+++ b/apps/api/src/lib/buildPacks/nextjs.ts
@@ -42,7 +42,7 @@ const createDockerfile = async (data, image): Promise => {
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
Dockerfile.push(`EXPOSE 80`);
}
diff --git a/apps/api/src/lib/buildPacks/nuxtjs.ts b/apps/api/src/lib/buildPacks/nuxtjs.ts
index 957dc5bce..cc7fe36b4 100644
--- a/apps/api/src/lib/buildPacks/nuxtjs.ts
+++ b/apps/api/src/lib/buildPacks/nuxtjs.ts
@@ -42,7 +42,7 @@ const createDockerfile = async (data, image): Promise => {
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
Dockerfile.push(`EXPOSE 80`);
}
diff --git a/apps/api/src/lib/buildPacks/react.ts b/apps/api/src/lib/buildPacks/react.ts
index e85704d3f..d47eb5847 100644
--- a/apps/api/src/lib/buildPacks/react.ts
+++ b/apps/api/src/lib/buildPacks/react.ts
@@ -8,7 +8,7 @@ const createDockerfile = async (data, image): Promise => {
Dockerfile.push(`FROM ${image}`);
Dockerfile.push(`LABEL coolify.buildId=${buildId}`);
Dockerfile.push('WORKDIR /app');
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
diff --git a/apps/api/src/lib/buildPacks/static.ts b/apps/api/src/lib/buildPacks/static.ts
index 19b13cef3..1a9916082 100644
--- a/apps/api/src/lib/buildPacks/static.ts
+++ b/apps/api/src/lib/buildPacks/static.ts
@@ -31,7 +31,7 @@ const createDockerfile = async (data, image): Promise => {
});
}
if (buildCommand) {
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
} else {
Dockerfile.push(`COPY .${baseDirectory || ''} ./`);
}
diff --git a/apps/api/src/lib/buildPacks/svelte.ts b/apps/api/src/lib/buildPacks/svelte.ts
index 56fc12d7a..74e377657 100644
--- a/apps/api/src/lib/buildPacks/svelte.ts
+++ b/apps/api/src/lib/buildPacks/svelte.ts
@@ -8,7 +8,7 @@ const createDockerfile = async (data, image): Promise => {
Dockerfile.push(`FROM ${image}`);
Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.buildId=${buildId}`);
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
diff --git a/apps/api/src/lib/buildPacks/vuejs.ts b/apps/api/src/lib/buildPacks/vuejs.ts
index 56fc12d7a..74e377657 100644
--- a/apps/api/src/lib/buildPacks/vuejs.ts
+++ b/apps/api/src/lib/buildPacks/vuejs.ts
@@ -8,7 +8,7 @@ const createDockerfile = async (data, image): Promise => {
Dockerfile.push(`FROM ${image}`);
Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.buildId=${buildId}`);
- Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
+ Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/ ./`);
if (baseImage?.includes('nginx')) {
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
}
diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts
index ab90b3a53..a3c754f15 100644
--- a/apps/api/src/lib/common.ts
+++ b/apps/api/src/lib/common.ts
@@ -19,7 +19,7 @@ import { saveBuildLog, saveDockerRegistryCredentials } from './buildPacks/common
import { scheduler } from './scheduler';
import type { ExecaChildProcess } from 'execa';
-export const version = '3.12.21';
+export const version = '3.12.22';
export const isDev = process.env.NODE_ENV === 'development';
export const proxyPort = process.env.COOLIFY_PROXY_PORT;
export const proxySecurePort = process.env.COOLIFY_PROXY_SECURE_PORT;
diff --git a/apps/api/src/routes/api/v1/applications/handlers.ts b/apps/api/src/routes/api/v1/applications/handlers.ts
index 8d8f3ead2..886b7bc88 100644
--- a/apps/api/src/routes/api/v1/applications/handlers.ts
+++ b/apps/api/src/routes/api/v1/applications/handlers.ts
@@ -736,7 +736,7 @@ export async function deleteApplication(
where: { id },
include: { destinationDocker: true, teams: true }
});
- if (teamId !== '0' || !application.teams.some((team) => team.id === teamId)) {
+ if (teamId !== '0' && !application.teams.some((team) => team.id === teamId)) {
throw { status: 403, message: 'You are not allowed to delete this application.' };
}
if (application?.destinationDocker?.id && application.destinationDocker?.network) {
diff --git a/apps/ui/src/routes/applications/[id]/configuration/_GitlabRepositories.svelte b/apps/ui/src/routes/applications/[id]/configuration/_GitlabRepositories.svelte
index 737fc426f..97db0ba07 100644
--- a/apps/ui/src/routes/applications/[id]/configuration/_GitlabRepositories.svelte
+++ b/apps/ui/src/routes/applications/[id]/configuration/_GitlabRepositories.svelte
@@ -406,7 +406,7 @@
>
{#if tryAgain}
- An error occured during authenticating with GitLab. Please check your GitLab Source
+ An error occurred during authenticating with GitLab. Please check your GitLab Source
configuration here.