chore(Dockerfile): build and deploy via Docker, remove Nixpacks
This commit is contained in:
parent
f85f47bbd4
commit
c9015a7f2b
7 changed files with 81 additions and 19 deletions
7
.dockerignore
Normal file
7
.dockerignore
Normal file
|
@ -0,0 +1,7 @@
|
|||
node_modules
|
||||
npm-debug.log
|
||||
.dockerignore
|
||||
.git
|
||||
.gitignore
|
||||
Dockerfile
|
||||
README.md
|
64
Dockerfile
Normal file
64
Dockerfile
Normal file
|
@ -0,0 +1,64 @@
|
|||
FROM node:21
|
||||
|
||||
# install system dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git \
|
||||
openssh-client \
|
||||
rsync \
|
||||
curl \
|
||||
php-cli \
|
||||
php-mbstring \
|
||||
php-xml \
|
||||
jq \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# set working directory
|
||||
WORKDIR /workdir
|
||||
|
||||
# build time args
|
||||
ARG GIT_REPO
|
||||
ARG GIT_BRANCH=main
|
||||
|
||||
# clone source
|
||||
RUN git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPO} app
|
||||
|
||||
# move into app directory
|
||||
WORKDIR /workdir/app
|
||||
|
||||
# build-time env vars
|
||||
ARG POSTGREST_API_KEY
|
||||
ARG POSTGREST_URL
|
||||
|
||||
# export vars for build staps
|
||||
ENV POSTGREST_API_KEY=${POSTGREST_API_KEY}
|
||||
ENV POSTGREST_URL=${POSTGREST_URL}
|
||||
|
||||
# clean npm cache
|
||||
RUN npm cache clean --force
|
||||
|
||||
# install node deps
|
||||
RUN npm install
|
||||
|
||||
# install php deps
|
||||
RUN curl -sS https://getcomposer.org/installer | php && \
|
||||
mv composer.phar /usr/bin/composer && \
|
||||
chmod +x /usr/bin/composer
|
||||
|
||||
RUN composer install --no-dev --optimize-autoloader
|
||||
|
||||
# build
|
||||
RUN npm run build
|
||||
|
||||
# set runtime env vars
|
||||
ARG SERVER_IP
|
||||
ENV SERVER_IP=${SERVER_IP}
|
||||
|
||||
# deploy and manage container healthcheck
|
||||
CMD bash -c "\
|
||||
mkdir -p ~/.ssh && \
|
||||
echo \"${SSH_PRIVATE_KEY}\" > ~/.ssh/id_rsa && \
|
||||
chmod 600 ~/.ssh/id_rsa && \
|
||||
ssh-keyscan -H \"${SERVER_IP}\" >> ~/.ssh/known_hosts && \
|
||||
rsync -avz --delete dist/ root@\"${SERVER_IP}\":/var/www/coryd.dev/ && \
|
||||
echo \"✅ Deployed successfully\" && \
|
||||
tail -f /dev/null"
|
|
@ -45,4 +45,6 @@ NAVIDROME_API_TOKEN # server
|
|||
ARTIST_IMPORT_TOKEN # server
|
||||
COOLIFY_REBUILD_TOKEN # server
|
||||
COOLIFY_REBUILD_URL # server
|
||||
GIT_REPO # build
|
||||
SERVER_URL # build
|
||||
```
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
[phases.setup]
|
||||
aptPkgs = [
|
||||
"curl",
|
||||
"wget",
|
||||
"zip",
|
||||
"unzip",
|
||||
"php-cli",
|
||||
"php-mbstring",
|
||||
"openssh-client",
|
||||
"rsync",
|
||||
"jq"
|
||||
]
|
||||
cmds = [
|
||||
"curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer && chmod +x /usr/bin/composer",
|
||||
]
|
4
package-lock.json
generated
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "coryd.dev",
|
||||
"version": "3.3.4",
|
||||
"version": "3.4.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "coryd.dev",
|
||||
"version": "3.3.4",
|
||||
"version": "3.4.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"html-minifier-terser": "7.2.0",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "coryd.dev",
|
||||
"version": "3.3.4",
|
||||
"version": "3.4.0",
|
||||
"description": "The source for my personal site. Built using 11ty (and other tools).",
|
||||
"type": "module",
|
||||
"engines": {
|
||||
|
|
|
@ -30,7 +30,9 @@ SECRETS_JSON='{
|
|||
"NAVIDROME_API_URL": "{{ op://Private/coryd.dev secrets/NAVIDROME_API_URL }}",
|
||||
"NAVIDROME_API_TOKEN": "{{ op://Private/coryd.dev secrets/NAVIDROME_API_TOKEN }}",
|
||||
"COOLIFY_REBUILD_TOKEN": "{{ op://Private/coryd.dev secrets/COOLIFY_REBUILD_TOKEN }}",
|
||||
"COOLIFY_REBUILD_URL": "{{ op://Private/coryd.dev secrets/COOLIFY_REBUILD_URL }}"
|
||||
"COOLIFY_REBUILD_URL": "{{ op://Private/coryd.dev secrets/COOLIFY_REBUILD_URL }}",
|
||||
"GIT_REPO": "{{ op://Private/coryd.dev secrets/GIT_REPO }}",
|
||||
"SERVER_IP": "{{ op://Private/coryd.dev secrets/SERVER_IP }}"
|
||||
}'
|
||||
|
||||
SECRETS=$(echo "$SECRETS_JSON" | op inject)
|
||||
|
@ -77,6 +79,8 @@ for file in scripts/templates/*.template; do
|
|||
sed -i '' -e "s|{{NAVIDROME_API_TOKEN}}|$(escape_special_chars "$NAVIDROME_API_TOKEN")|g" "$new_file"
|
||||
sed -i '' -e "s|{{COOLIFY_REBUILD_TOKEN}}|$(escape_special_chars "$COOLIFY_REBUILD_TOKEN")|g" "$new_file"
|
||||
sed -i '' -e "s|{{COOLIFY_REBUILD_URL}}|$(escape_special_chars "$COOLIFY_REBUILD_URL")|g" "$new_file"
|
||||
sed -i '' -e "s|{{GIT_REPO}}|$(escape_special_chars "$GIT_REPO")|g" "$new_file"
|
||||
sed -i '' -e "s|{{SERVER_IP}}|$(escape_special_chars "$SERVER_IP")|g" "$new_file"
|
||||
done
|
||||
|
||||
echo "${COLOR_BLUE}all configurations generated in the 'generated' folder.${COLOR_RESET}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue