Update buildpacks for static sites

This commit is contained in:
Andras Bacsai
2022-03-21 21:25:01 +01:00
parent c013764b61
commit f5e7a84fa6
8 changed files with 29 additions and 48 deletions

View File

@@ -143,27 +143,35 @@ export async function copyBaseConfigurationFiles(buildPack, workdir, buildId, ap
`user nginx; `user nginx;
worker_processes auto; worker_processes auto;
error_log /var/log/nginx/error.log warn; error_log /docker.stdout;
pid /var/run/nginx.pid; pid /run/nginx.pid;
events { events {
worker_connections 1024; worker_connections 1024;
} }
http { http {
include /etc/nginx/mime.types; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /docker.stdout main;
access_log off;
sendfile on; sendfile on;
#tcp_nopush on; tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65; keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server { server {
listen 80; listen 80;
server_name localhost; server_name localhost;
location / { location / {
root /usr/share/nginx/html; root /app;
index index.html; index index.html;
try_files $uri $uri/index.html $uri/ /index.html =404; try_files $uri $uri/index.html $uri/ /index.html =404;
} }
@@ -174,7 +182,7 @@ export async function copyBaseConfigurationFiles(buildPack, workdir, buildId, ap
# #
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { location = /50x.html {
root /usr/share/nginx/html; root /app;
} }
} }

View File

@@ -6,18 +6,17 @@ const createDockerfile = async (data, imageforBuild): Promise<void> => {
const Dockerfile: Array<string> = []; const Dockerfile: Array<string> = [];
Dockerfile.push(`FROM ${imageforBuild}`); Dockerfile.push(`FROM ${imageforBuild}`);
Dockerfile.push('WORKDIR /usr/share/nginx/html'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.image=true`); Dockerfile.push(`LABEL coolify.image=true`);
Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`); Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`); Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
Dockerfile.push(`EXPOSE 80`); Dockerfile.push(`EXPOSE 80`);
Dockerfile.push('CMD ["nginx", "-g", "daemon off;"]');
await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n')); await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n'));
}; };
export default async function (data) { export default async function (data) {
try { try {
const image = 'nginx:stable-alpine'; const image = 'webdevops/nginx:alpine';
const imageForBuild = 'node:lts'; const imageForBuild = 'node:lts';
await buildCacheImageWithNode(data, imageForBuild); await buildCacheImageWithNode(data, imageForBuild);

View File

@@ -13,10 +13,6 @@ const createDockerfile = async (data, image): Promise<void> => {
Dockerfile.push(`RUN chmod +x /usr/local/bin/install-php-extensions`); Dockerfile.push(`RUN chmod +x /usr/local/bin/install-php-extensions`);
Dockerfile.push(`RUN /usr/local/bin/install-php-extensions ${data.phpModules.join(' ')}`); Dockerfile.push(`RUN /usr/local/bin/install-php-extensions ${data.phpModules.join(' ')}`);
} }
// Dockerfile.push('RUN a2enmod rewrite');
// Dockerfile.push(`ENV APACHE_DOCUMENT_ROOT /app`);
// Dockerfile.push(`RUN sed -ri -e 's!/var/www/html!/app!g' /etc/apache2/sites-available/*.conf`);
// Dockerfile.push(`RUN sed -ri -e 's!/var/www/!/app!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf`)
Dockerfile.push('WORKDIR /app'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`COPY .${baseDirectory || ''} /app`); Dockerfile.push(`COPY .${baseDirectory || ''} /app`);
Dockerfile.push(`COPY /.htaccess .`); Dockerfile.push(`COPY /.htaccess .`);

View File

@@ -7,17 +7,16 @@ const createDockerfile = async (data, image): Promise<void> => {
Dockerfile.push(`FROM ${image}`); Dockerfile.push(`FROM ${image}`);
Dockerfile.push(`LABEL coolify.image=true`); Dockerfile.push(`LABEL coolify.image=true`);
Dockerfile.push('WORKDIR /usr/share/nginx/html'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`); Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`); Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
Dockerfile.push(`EXPOSE 80`); Dockerfile.push(`EXPOSE 80`);
Dockerfile.push('CMD ["nginx", "-g", "daemon off;"]');
await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n')); await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n'));
}; };
export default async function (data) { export default async function (data) {
try { try {
const image = 'nginx:stable-alpine'; const image = 'webdevops/nginx:alpine';
const imageForBuild = 'node:lts'; const imageForBuild = 'node:lts';
await buildCacheImageWithNode(data, imageForBuild); await buildCacheImageWithNode(data, imageForBuild);
await createDockerfile(data, image); await createDockerfile(data, image);

View File

@@ -15,7 +15,7 @@ const createDockerfile = async (data, image): Promise<void> => {
const Dockerfile: Array<string> = []; const Dockerfile: Array<string> = [];
Dockerfile.push(`FROM ${image}`); Dockerfile.push(`FROM ${image}`);
Dockerfile.push('WORKDIR /usr/share/nginx/html'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.image=true`); Dockerfile.push(`LABEL coolify.image=true`);
if (secrets.length > 0) { if (secrets.length > 0) {
secrets.forEach((secret) => { secrets.forEach((secret) => {
@@ -39,13 +39,12 @@ const createDockerfile = async (data, image): Promise<void> => {
} }
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`); Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
Dockerfile.push(`EXPOSE 80`); Dockerfile.push(`EXPOSE 80`);
Dockerfile.push('CMD ["nginx", "-g", "daemon off;"]');
await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n')); await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n'));
}; };
export default async function (data) { export default async function (data) {
try { try {
const image = 'nginx:stable-alpine'; const image = 'webdevops/nginx:alpine';
const imageForBuild = 'node:lts'; const imageForBuild = 'node:lts';
if (data.buildCommand) await buildCacheImageWithNode(data, imageForBuild); if (data.buildCommand) await buildCacheImageWithNode(data, imageForBuild);
await createDockerfile(data, image); await createDockerfile(data, image);

View File

@@ -6,18 +6,17 @@ const createDockerfile = async (data, image): Promise<void> => {
const Dockerfile: Array<string> = []; const Dockerfile: Array<string> = [];
Dockerfile.push(`FROM ${image}`); Dockerfile.push(`FROM ${image}`);
Dockerfile.push('WORKDIR /usr/share/nginx/html'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.image=true`); Dockerfile.push(`LABEL coolify.image=true`);
Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`); Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`); Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
Dockerfile.push(`EXPOSE 80`); Dockerfile.push(`EXPOSE 80`);
Dockerfile.push('CMD ["nginx", "-g", "daemon off;"]');
await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n')); await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n'));
}; };
export default async function (data) { export default async function (data) {
try { try {
const image = 'nginx:stable-alpine'; const image = 'webdevops/nginx:alpine';
const imageForBuild = 'node:lts'; const imageForBuild = 'node:lts';
await buildCacheImageWithNode(data, imageForBuild); await buildCacheImageWithNode(data, imageForBuild);

View File

@@ -6,35 +6,19 @@ const createDockerfile = async (data, image): Promise<void> => {
const Dockerfile: Array<string> = []; const Dockerfile: Array<string> = [];
Dockerfile.push(`FROM ${image}`); Dockerfile.push(`FROM ${image}`);
Dockerfile.push('WORKDIR /usr/share/nginx/html'); Dockerfile.push('WORKDIR /app');
Dockerfile.push(`LABEL coolify.image=true`); Dockerfile.push(`LABEL coolify.image=true`);
Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`); Dockerfile.push(`COPY --from=${applicationId}:${tag}-cache /app/${publishDirectory} ./`);
Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`); Dockerfile.push(`COPY /nginx.conf /etc/nginx/nginx.conf`);
Dockerfile.push(`EXPOSE 80`); Dockerfile.push(`EXPOSE 80`);
Dockerfile.push('CMD ["nginx", "-g", "daemon off;"]');
await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n')); await fs.writeFile(`${workdir}/Dockerfile`, Dockerfile.join('\n'));
}; };
export default async function (data) { export default async function (data) {
try { try {
const image = 'nginx:stable-alpine'; const image = 'webdevops/nginx:alpine';
const imageForBuild = 'node:lts'; const imageForBuild = 'node:lts';
await buildCacheImageWithNode(data, imageForBuild); await buildCacheImageWithNode(data, imageForBuild);
// await fs.writeFile(`${data.workdir}/default.conf`, `server {
// listen 80;
// server_name localhost;
// location / {
// root /usr/share/nginx/html;
// try_files $uri $uri/ /index.html;
// }
// error_page 500 502 503 504 /50x.html;
// location = /50x.html {
// root /usr/share/nginx/html;
// }
// }
// `);
await createDockerfile(data, image); await createDockerfile(data, image);
await buildImage(data); await buildImage(data);
} catch (error) { } catch (error) {

View File

@@ -52,7 +52,6 @@ export default async function (job) {
settings, settings,
persistentStorage persistentStorage
} = job.data; } = job.data;
console.log(persistentStorage);
const { debug } = settings; const { debug } = settings;
await asyncSleep(1000); await asyncSleep(1000);
@@ -68,11 +67,10 @@ export default async function (job) {
}); });
let imageId = applicationId; let imageId = applicationId;
let domain = getDomain(fqdn); let domain = getDomain(fqdn);
const isHttps = fqdn.startsWith('https://');
let volumes = let volumes =
persistentStorage?.map((storage) => { persistentStorage?.map((storage) => {
return `${applicationId}-${storage.id}:${storage.path}`; return `${applicationId}-${storage.id}:${type !== 'docker' ? '/app/' : ''}${storage.path}`;
}) || []; }) || [];
// Previews, we need to get the source branch and set subdomain // Previews, we need to get the source branch and set subdomain
if (pullmergeRequestId) { if (pullmergeRequestId) {
@@ -267,7 +265,6 @@ export default async function (job) {
} }
} }
volumes = volumes.map((volume) => `-v ${volume} `).join(); volumes = volumes.map((volume) => `-v ${volume} `).join();
console.log(volumes);
const { stderr } = await asyncExecShell( const { stderr } = await asyncExecShell(
`DOCKER_HOST=${host} docker run ${envFound && `--env-file=${workdir}/.env`} ${labels.join( `DOCKER_HOST=${host} docker run ${envFound && `--env-file=${workdir}/.env`} ${labels.join(
' ' ' '