mirror of
https://github.com/sergeyyarkov/yarkov.tech.git
synced 2026-10-11 02:19:08 +03:00
dockerized
This commit is contained in:
parent
adf3238fe3
commit
9611adb2e0
@ -0,0 +1,14 @@
|
||||
node_modules
|
||||
dist
|
||||
.astro
|
||||
.env
|
||||
.env.example
|
||||
.git
|
||||
.gitignore
|
||||
dockerfile
|
||||
.dockerignore
|
||||
.vscode
|
||||
.prettierrc
|
||||
codegen.ts
|
||||
schema.graphql
|
||||
README.md
|
||||
@ -1,3 +1,4 @@
|
||||
ASTRO_TELEMETRY_DISABLED=1
|
||||
DIRECTUS_URL=
|
||||
DIRECTUS_URL_GRAPHQL=
|
||||
DIRECTUS_TOKEN=
|
||||
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
ARG NODE_IMAGE=node:24.0.0-alpine
|
||||
|
||||
FROM ${NODE_IMAGE} AS build
|
||||
|
||||
WORKDIR /app
|
||||
COPY package*.json .
|
||||
RUN npm ci
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
FROM ${NODE_IMAGE} AS production
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /app/dist ./dist
|
||||
COPY --from=build /app/package*.json .
|
||||
RUN npm ci --omit=dev
|
||||
|
||||
EXPOSE 9966
|
||||
CMD [ "node", "./dist/server/entry.mjs"]
|
||||
17
compose.yml
17
compose.yml
@ -0,0 +1,17 @@
|
||||
services:
|
||||
yarkov-tech-node:
|
||||
container_name: yarkov-tech-node
|
||||
restart: unless-stopped
|
||||
image: sergeyyarkov/yarkovtech:latest
|
||||
networks:
|
||||
- nginx_net
|
||||
env_file: .env
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- 9966
|
||||
|
||||
networks:
|
||||
nginx_net:
|
||||
external: true
|
||||
@ -22,14 +22,15 @@ const { articles } = Astro.props;
|
||||
(a) =>
|
||||
a && (
|
||||
<a
|
||||
href={`${createRelativeArticleUrl({ slug: a.slug, articleLang: `${a.languages_code?.code.split("-")[0]}`, pubDate: a.pub_date })}`}>{`${a.languages_code?.name}`}</a>
|
||||
href={`${createRelativeArticleUrl({ slug: a.slug, articleLang: `${a.languages_code?.code.split("-")[0]}`, pubDate: a.pub_date })}`}
|
||||
>{`${a.languages_code?.name}`}</a>
|
||||
)
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
<style lang='scss'>
|
||||
<style lang="scss">
|
||||
div {
|
||||
margin: 10px 0;
|
||||
font-size: var(--font-size-lg);
|
||||
|
||||
@ -12,7 +12,11 @@ export function getLanguageKeys(): Array<string> {
|
||||
}
|
||||
|
||||
export function getLanguageFromURL(pathname: string): LanguageKeys {
|
||||
const lang = pathname.split("/")[1] as LanguageKeys;
|
||||
const splittedPathName = pathname.split("/");
|
||||
let lang = splittedPathName[1] as LanguageKeys;
|
||||
|
||||
if ((lang as string) === "blog") lang = splittedPathName[2] as LanguageKeys;
|
||||
|
||||
if (Object.hasOwn(languages, lang)) return lang;
|
||||
return DEFAULT_LANGUAGE;
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
import ArticleLayout from "@root/layouts/article.astro";
|
||||
import { getArticleTranslationsBySlug, incArticleTranslationViews } from "@/src/queries";
|
||||
|
||||
// Example of an URL: https://website.com/blog/01-01-2025/my-article/
|
||||
const { url } = Astro.params as { url: string };
|
||||
const slug = url.split("/").at(-1);
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ export function filterArticlesByPageLang<
|
||||
|
||||
/**
|
||||
* This will create a relative url based on article entry.
|
||||
* `/en/blog/2023-01-01/my-first-article`
|
||||
* `/blog/en/2023-01-01/my-first-article`
|
||||
*/
|
||||
export function createRelativeArticleUrl(
|
||||
params: { slug: string; articleLang: string; pubDate: string },
|
||||
@ -40,7 +40,7 @@ export function createRelativeArticleUrl(
|
||||
const { pubDate, articleLang, slug } = params;
|
||||
const date = pubDate.split("T")[0];
|
||||
const lang = articleLang !== DEFAULT_LANGUAGE ? "/" + articleLang : "";
|
||||
return `${lang}/${prefix}/${date}/${slug}`;
|
||||
return `/${prefix}${lang}/${date}/${slug}`;
|
||||
}
|
||||
|
||||
export function formatToArticleBlocks(articles: ArticleQuery["article"][0]["translations"]) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user