Compare commits

..

36 commits

Author SHA1 Message Date
1d35c57680
Add pdo_sqlsrv
Some checks failed
Test build / build (push) Successful in 33m55s
Release into production / build (release) Has been cancelled
2025-01-20 18:20:02 +01:00
00f7530bb5
Fix docker registry
Some checks failed
Test build / build (push) Failing after 15s
2025-01-20 15:33:48 +01:00
0e9bcaf531
No python in pipeline
Some checks failed
Test build / build (push) Failing after 29s
2025-01-20 14:13:53 +01:00
3bd1605272
Python version
Some checks failed
Test build / build (push) Has been cancelled
2025-01-20 14:12:05 +01:00
30674f7e51
Fix python version
Some checks failed
Test build / build (push) Failing after 5s
2025-01-20 14:11:22 +01:00
cff0c70f0d
Fix workflow_dispatch input
Some checks failed
Test build / build (push) Has been cancelled
2025-01-20 14:10:30 +01:00
d128f30e78
Fix release pipeline
Some checks failed
Test build / build (push) Has been cancelled
2025-01-20 14:10:05 +01:00
54be74db63
Fix test pipeline
Some checks failed
Test build / build (push) Has been cancelled
2025-01-20 14:09:33 +01:00
9b772ff87b
Switch to plain progress
Some checks failed
Test build / build (push) Failing after 9m42s
2025-01-20 00:20:54 +01:00
f85560426b
Fixed of the testing process, drop parallel building of Python
Some checks failed
Test build / build (push) Has been cancelled
2025-01-20 00:07:09 +01:00
c6d7126d2a
Better test workflow 2025-01-19 23:01:59 +01:00
ef43ec73ad
Fix rosti.sh generator
Some checks failed
Test build / build (push) Failing after 26m25s
2025-01-19 22:55:11 +01:00
0db0f874fa
Fix deno
Some checks failed
Test build / build (push) Failing after 29m8s
2025-01-19 20:36:10 +01:00
6c7c6f80fb
Test fix, parallel procesing of Node.js builds
Some checks failed
Test build / build (push) Failing after 24m43s
2025-01-19 16:00:07 +01:00
d462f6c091
Final workflow, fix test workflow
Some checks failed
Test build / build (push) Failing after 36m19s
2025-01-19 14:41:22 +01:00
6af035476b
First try for 2024.12-1, new versions of everything, fix ruby bug
Some checks are pending
Test build / build (push) Waiting to run
2025-01-19 14:30:03 +01:00
4de583b57e
Fix PHP
All checks were successful
Test build / build (push) Successful in 41m35s
2024-11-23 16:35:10 +01:00
c740329c99
Initial commit of 2024.12-1
Some checks failed
Test build / build (push) Has been cancelled
2024-11-23 16:26:03 +01:00
74ea47288e
Fix PHP build
All checks were successful
Test build / build (push) Successful in 27m40s
2024-10-08 12:16:00 +02:00
10612a9b26
Bump up everything for 2024.10-1
Some checks failed
Test build / build (push) Failing after 19m41s
2024-10-08 11:13:35 +02:00
45c83667f5
Fix crontab
All checks were successful
Test build / build (push) Successful in 7m16s
2024-08-14 01:07:39 +02:00
aae340d034
Fix crontab in start script
All checks were successful
Test build / build (push) Successful in 7m14s
2024-08-14 00:55:50 +02:00
2991cbaf01
Crontab path
All checks were successful
Test build / build (push) Successful in 7m15s
2024-08-14 00:35:38 +02:00
2891d7dc6e
Wait a little bit to clean
All checks were successful
Test build / build (push) Successful in 9m18s
2024-08-13 21:41:29 +02:00
60b03be0ff
Fix tests
Some checks failed
Test build / build (push) Failing after 31s
2024-08-13 21:35:17 +02:00
fece0be44e
Fix pipeline
Some checks failed
Test build / build (push) Failing after 31s
2024-08-13 21:24:30 +02:00
ed6ea70fa5
A lot of new stuff
Some checks failed
Test build / build (push) Failing after 35m53s
2024-08-13 19:59:45 +02:00
07c9d923bb
Fix
Some checks failed
Test build / build (push) Failing after 5s
2023-11-26 03:24:22 +01:00
047f922fae
Update pipeline
Some checks failed
Test build / build (push) Failing after 6s
2023-11-26 03:20:00 +01:00
ebfc74b9e3
Builder 38
Some checks failed
Test build / build-test (push) Failing after 4m48s
2023-11-26 03:03:41 +01:00
9bd5aefd76
Build test pipeline
Some checks failed
Test build / build-test (push) Failing after 4s
2023-11-26 03:02:55 +01:00
c397e365dc
Test build pipeline
Some checks failed
Test build / build (push) Successful in 57s
Image testing / tests (push) Has been cancelled
2023-11-26 02:53:10 +01:00
73b5ce09e3
Test pipeline 2023-11-26 02:52:15 +01:00
940d2b7f01
Passenger for Ruby
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-25 03:00:21 +01:00
bef7e0a2c7
2023.12-1 updated versions of all supported techs
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2023-11-21 01:05:16 +01:00
488cea48af
Fix redis config
Some checks failed
continuous-integration/drone/push Build is failing
2023-10-27 00:55:12 +02:00
38 changed files with 868 additions and 158 deletions

View file

@ -4,7 +4,7 @@ name: image building
steps: steps:
- name: build&push squashed image - name: build&push squashed image
image: harbor.hq.rosti.cz/library/builder:38 image: harbor.hq.rosti.cz/library/builder:39
environment: environment:
username: robot$rosti+rosti username: robot$rosti+rosti
password: password:
@ -29,7 +29,7 @@ name: test image
steps: steps:
- name: test build - name: test build
image: harbor.hq.rosti.cz/library/builder:38 image: harbor.hq.rosti.cz/library/builder:39
environment: environment:
username: robot$rosti+rosti username: robot$rosti+rosti
password: password:

31
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: Release into production
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Version to release'
required: true
default: 'latest'
type: string
jobs:
build:
runs-on: [dev, amd64]
steps:
- uses: actions/checkout@v4
- name: Get git tag
id: get_tag
if: github.event_name == 'release'
run: echo "TAG_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Set version from input
if: github.event_name == 'workflow_dispatch'
run: echo "TAG_NAME=${{ github.event.inputs.version }}" >> $GITHUB_ENV
- name: Registry login
run: echo -n "${{ secrets.HARBOR_REPO_PASSWORD }}" | docker login harbor.rosti.cz -u "${{ secrets.HARBOR_REPO_USERNAME }}" --password-stdin
- name: Final build
run: task squashed REPO=harbor.rosti.cz/rosti/runtime VERSION=${{ env.TAG_NAME }}
- name: Push
run: task push REPO=harbor.rosti.cz/rosti/runtime VERSION=${{ env.TAG_NAME }}

25
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,25 @@
name: Test build
on:
push:
branches: [ main ]
jobs:
build:
runs-on: [dev, amd64]
steps:
- uses: actions/checkout@v4
- name: docker login
run: |
docker login gitea.ceperka.net -u "${{ secrets.REPO_USERNAME }}" -p "${{ secrets.REPO_PASSWORD }}"
- name: Build
run: task build REPO=gitea.ceperka.net/rosti/runtime VERSION=pipeline
- name: Test
run: task test REPO=gitea.ceperka.net/rosti/runtime VERSION=pipeline
- name: Push
run: task push REPO=gitea.ceperka.net/rosti/runtime VERSION=pipeline
- name: Cleaning step
if: always()
run: docker stop dev_test || exit 0

View file

@ -1,14 +0,0 @@
name: Image testing
on:
- push
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: testing
run: |
make build
make test

View file

@ -1,12 +1,12 @@
FROM debian:bullseye FROM debian:bookworm
RUN DEBIAN_FRONTEND=noninteractive apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get upgrade -y RUN DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget gpg RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget gpg
RUN echo "deb http://deb.debian.org/debian/ bullseye main contrib non-free" > /etc/apt/sources.list && \ RUN echo "deb http://deb.debian.org/debian/ bookworm main contrib non-free" > /etc/apt/sources.list && \
echo "deb http://security.debian.org/debian-security bullseye-security main" >> /etc/apt/sources.list && \ echo "deb http://security.debian.org/debian-security bookworm-security main" >> /etc/apt/sources.list && \
echo "deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list echo "deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free" >> /etc/apt/sources.list
RUN DEBIAN_FRONTEND=noninteractive apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales libffi-dev \ RUN DEBIAN_FRONTEND=noninteractive apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales libffi-dev \
libssl-dev default-libmysqlclient-dev ca-certificates libpq-dev libjpeg62 libjpeg-dev \ libssl-dev default-libmysqlclient-dev ca-certificates libpq-dev libjpeg62 libjpeg-dev \
@ -14,14 +14,20 @@ libpng-dev libpng-dev build-essential git mercurial build-essential \
libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev \ libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev \
libgdbm-dev libgd-dev cron git subversion vim nano mc htop procps \ libgdbm-dev libgd-dev cron git subversion vim nano mc htop procps \
dropbear gettext wget redis-server memcached supervisor curl ssh \ dropbear gettext wget redis-server memcached supervisor curl ssh \
mariadb-client postgresql-client-13 postgresql-13-postgis-3-scripts bind9-host dnsutils nginx nginx-extras libnginx-mod-http-image-filter \ mariadb-client postgresql-client-15 postgresql-15-postgis-3-scripts bind9-host dnsutils nginx nginx-extras libnginx-mod-http-image-filter \
libxml2-dev libxslt1-dev openssh-sftp-server links2 lynx \ libxml2-dev libxslt1-dev openssh-sftp-server links2 lynx \
imagemagick libmagick++-6.q16-dev libmagick++-6.q16hdri-dev libmagickwand-dev ncdu libsodium-dev \ imagemagick libmagick++-6.q16-dev libmagick++-6.q16hdri-dev libmagickwand-dev ncdu libsodium-dev \
python3 python3-pip python3-virtualenv \ python3 python3-pip python3-virtualenv \
libcurl4-openssl-dev python-dev libproj-dev gdal-bin libmemcached-dev swig mutt \ libcurl4-openssl-dev python3-dev libproj-dev gdal-bin libmemcached-dev swig mutt \
ffmpeg libyaml-dev libc-client2007e-dev libonig-dev libkrb5-dev dialog \ ffmpeg libyaml-dev libc-client2007e-dev libonig-dev libkrb5-dev dialog \
whiptail tmux rsync nmap libzip-dev libfreetype6-dev \ whiptail tmux rsync nmap libzip-dev libfreetype6-dev \
jpegoptim optipng pngquant gifsicle webp libvpx-dev libwebp-dev jq inotify-tools ripgrep jpegoptim optipng pngquant gifsicle webp libvpx-dev libwebp-dev jq inotify-tools ripgrep \
wkhtmltopdf libzbar0 fzf \
gnupg2 unixodbc-dev apt-transport-https libgssapi-krb5-2 # for MS SQL Server extension
# This is stange thing in Debian 12, it blocks installation of chromium
RUN DEBIAN_FRONTEND=noninteractive apt-get remove -y luit
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y chromium
WORKDIR /srv WORKDIR /srv
@ -42,40 +48,68 @@ ENV TERM xterm
############# #############
## Node.js ## Node.js
# From https://nodejs.org/en/about/previous-releases
WORKDIR /usr/src WORKDIR /usr/src
ADD build_node.sh /usr/local/bin/build_node.sh ADD build_node.sh /usr/local/bin/build_node.sh
# 2023/08 RUN build_node.sh 18.20.5 & \
RUN build_node.sh 16.20.2 build_node.sh 20.18.1 & \
RUN build_node.sh 17.9.1 build_node.sh 21.7.3 & \
RUN build_node.sh 19.9.0 build_node.sh 22.13.0 & \
RUN build_node.sh 18.17.1 build_node.sh 23.6.0
RUN build_node.sh 20.6.1
## Python ## Python
# https://www.python.org/downloads/
WORKDIR /usr/src WORKDIR /usr/src
ADD build_python.sh /usr/local/bin/build_python.sh ADD build_python.sh /usr/local/bin/build_python.sh
# 2023/08 RUN build_python.sh 3.11.11
RUN build_python.sh 3.11.5 RUN build_python.sh 3.12.8
RUN build_python.sh 3.13.1
## PHP 7
ADD build_php.sh /usr/local/bin/build_php.sh
RUN build_php.sh 7.4.33
## PHP 8 ## PHP 8
# https://www.php.net/downloads.php
ADD build_php8.sh /usr/local/bin/build_php8.sh ADD build_php8.sh /usr/local/bin/build_php8.sh
# 2023/08 RUN build_php8.sh 8.3.16
RUN build_php8.sh 8.2.9 RUN build_php8.sh 8.4.3
## Ruby ## Ruby
# https://www.ruby-lang.org/en/downloads/releases/
WORKDIR /usr/src WORKDIR /usr/src
ADD build_ruby.sh /usr/local/bin/build_ruby.sh ADD build_ruby.sh /usr/local/bin/build_ruby.sh
# 2023/08 RUN build_ruby.sh 3.3.7
RUN build_ruby.sh 3.2.2 RUN build_ruby.sh 3.4.1
## Deno ## Deno
# From: https://github.com/denoland/deno/releases
ADD build_deno.sh /usr/local/bin/build_deno.sh ADD build_deno.sh /usr/local/bin/build_deno.sh
# 2023/08 # TODO: deno cannot run in parallel because it downloads filenames with the same name
RUN build_deno.sh 1.36.4 RUN build_deno.sh 1.46.3
RUN build_deno.sh 2.1.6
# Bun
# From here: https://bun.sh/
ADD build_bun.sh /usr/local/bin/build_bun.sh
RUN build_bun.sh 1.1.45
# OpenJDK
# From here: https://jdk.java.net/
ADD build_openjdk.sh /usr/local/bin/build_openjdk.sh
RUN build_openjdk.sh 23.0.1 c28985cbf10d4e648e4004050f8781aa 11
# Golang
# From here: https://go.dev/dl/
ADD build_golang.sh /usr/local/bin/build_golang.sh
RUN build_golang.sh 1.23.5
#############
# WKHTMLTOX This is not in development anymore so we will remove it with next version of Debian
WORKDIR /usr/src
RUN apt install -f xfonts-75dpi && \
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb && \
dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb && \
rm wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
############# #############
@ -116,6 +150,10 @@ ADD ./rosti.tmpl.sh /usr/src/
ADD ./Dockerfile /usr/src/ ADD ./Dockerfile /usr/src/
RUN cd /usr/src && /usr/local/bin/gen_rosti.fish > /usr/local/bin/rosti && chmod 755 /usr/local/bin/rosti RUN cd /usr/src && /usr/local/bin/gen_rosti.fish > /usr/local/bin/rosti && chmod 755 /usr/local/bin/rosti
## Rosti tooling
ADD ./activate_tech.fish /usr/local/bin/activate_tech
## Cleaning ## Cleaning
RUN apt-get clean && rm -rf /usr/src/* RUN apt-get clean && rm -rf /usr/src/*

View file

@ -1,8 +1,8 @@
# TODO: Unnecessary, remo this file # TODO: Unnecessary, remo this file
REPO=harbor.hq.rosti.cz/rosti/runtime REPO=harbor.hq.rosti.cz/rosti/runtime
DOCKER=docker DOCKER=docker
VERSION=2023.08-1 VERSION=2023.12-1
BASEIMAGE=debian:11 BASEIMAGE=debian:12
all: build all: build

View file

@ -3,8 +3,9 @@
version: '3' version: '3'
vars: vars:
REPO: harbor.hq.rosti.cz/rosti/runtime REPO: harbor.hq.rosti.cz
VERSION: 2023.04-2 REPO_PUBLIC: rosti/runtime
VERSION: 2025.01-1
BASEIMAGE: debian:bookworm BASEIMAGE: debian:bookworm
tasks: tasks:
@ -12,10 +13,16 @@ tasks:
deps: deps:
- build - build
pipeline:
cmds:
- task: build
- task: test
- task: push
build: build:
cmds: cmds:
- docker pull {{ .BASEIMAGE }} - docker pull {{ .BASEIMAGE }}
- docker build -t {{ .REPO }}:dev . - docker build --progress plain -t {{ .REPO }}:dev .
- docker tag {{ .REPO }}:dev {{ .REPO }}:{{ .VERSION }} - docker tag {{ .REPO }}:dev {{ .REPO }}:{{ .VERSION }}
- echo "JSON for admin:" - echo "JSON for admin:"
- python3 generate_versions.py - python3 generate_versions.py
@ -27,7 +34,7 @@ tasks:
squashed: squashed:
cmds: cmds:
- docker pull {{ .BASEIMAGE }} - docker pull {{ .BASEIMAGE }}
- docker build --squash -t {{ .REPO }}:dev-squashed . - docker build --progress plain --squash -t {{ .REPO }}:dev-squashed .
- docker tag {{ .REPO }}:dev-squashed {{ .REPO }}:{{ .VERSION }} - docker tag {{ .REPO }}:dev-squashed {{ .REPO }}:{{ .VERSION }}
- echo "JSON for admin:" - echo "JSON for admin:"
- python3 generate_versions.py - python3 generate_versions.py
@ -35,3 +42,14 @@ tasks:
push: push:
cmds: cmds:
- docker push {{ .REPO }}:{{ .VERSION }} - docker push {{ .REPO }}:{{ .VERSION }}
# deps:
# - squashed
install:
cmds:
- ssh rosti-node-26 docker pull {{ .REPO }}:{{ .VERSION }}
- ssh rosti-node-26 docker tag {{ .REPO }}:{{ .VERSION }} {{ .REPO_PUBLIC }}:{{ .VERSION }}
publish:
cmds:
- ssh rosti-node-26 docker push {{ .REPO_PUBLIC }}:{{ .VERSION }}

24
activate_tech.fish Executable file
View file

@ -0,0 +1,24 @@
#!/usr/bin/fish
for techline in (ls /opt/techs | fzf --layout reverse)
set tech (echo $techline | string split -f 1 - )
set ver (echo $techline | string split -f 2 - )
test -e /srv/bin/active_$tech && unlink /srv/bin/active_$tech
set primary_tech (readlink /srv/bin/primary_tech | string split -f 4 / | string split -f 1 "-")
if test $primary_tech = $tech
set_color -b red
echo "Technology $tech is already activated as primary tech, you can't activate it as secondary."
set_color normal
continue
end
set_color yellow
echo "Activating $tech-$ver"
set_color normal
ln -s /opt/techs/$tech-$ver/bin /srv/bin/active_$tech
set_color green
echo "Done."
set_color normal
end

16
build_bun.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
set -e
mkdir -p /opt/techs
VERSION=$1
cd /usr/src
wget https://github.com/oven-sh/bun/releases/download/bun-v$VERSION/bun-linux-x64.zip
unzip bun-linux-x64.zip
mkdir -p /opt/techs/bun-$VERSION
mv bun-linux-x64 /opt/techs/bun-$VERSION/bin
rm bun-linux-x64.zip

15
build_golang.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/bash
set -e
mkdir -p /opt/techs
VERSION=$1
HASH=$2
cd /usr/src
wget https://go.dev/dl/go${VERSION}.linux-amd64.tar.gz
tar xf go${VERSION}.linux-amd64.tar.gz
mv go /opt/techs/golang-$VERSION
rm go${VERSION}.linux-amd64.tar.gz

16
build_openjdk.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
set -e
mkdir -p /opt/techs
VERSION=$1
HASH=$2
NUM=$3
cd /usr/src
wget https://download.java.net/java/GA/jdk${VERSION}/${HASH}/${NUM}/GPL/openjdk-${VERSION}_linux-x64_bin.tar.gz
tar xf openjdk-${VERSION}_linux-x64_bin.tar.gz
mv jdk-${VERSION} /opt/techs/openjdk-$VERSION
rm openjdk-${VERSION}_linux-x64_bin.tar.gz

View file

@ -78,7 +78,6 @@ cd -
echo "no" | /opt/techs/php-$VERSION/bin/pecl install redis echo "no" | /opt/techs/php-$VERSION/bin/pecl install redis
echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick
echo "no" | /opt/techs/php-$VERSION/bin/pecl install memcached
echo "zend_extension=opcache.so" > /opt/techs/php-$VERSION/etc/conf.d/extensions.ini echo "zend_extension=opcache.so" > /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
echo "extension=redis.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini echo "extension=redis.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini

View file

@ -4,6 +4,7 @@ set -e
VERSION=$1 VERSION=$1
mkdir -p /opt/techs mkdir -p /opt/techs
cd /usr/src cd /usr/src
@ -70,13 +71,25 @@ cd -
echo "no" | /opt/techs/php-$VERSION/bin/pecl install redis echo "no" | /opt/techs/php-$VERSION/bin/pecl install redis
echo "no" | /opt/techs/php-$VERSION/bin/pecl install mongodb echo "no" | /opt/techs/php-$VERSION/bin/pecl install mongodb
echo "no" | /opt/techs/php-$VERSION/bin/pecl install sqlsrv
echo "no" | /opt/techs/php-$VERSION/bin/pecl install pdo_sqlsrv
export PATH=$PATH:/opt/techs/php-$VERSION/bin
composer.phar require ext-simplexml
echo "zend_extension=opcache.so" > /opt/techs/php-$VERSION/etc/conf.d/extensions.ini echo "zend_extension=opcache.so" > /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
echo "extension=redis.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini echo "extension=redis.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
echo "extension=mongodb.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini echo "extension=mongodb.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
echo "extension=sqlsrv.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
echo "extension=pdo_sqlsrv.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
# Not supported yet # Not supported yet
# https://github.com/Imagick/imagick/issues/358 # https://github.com/Imagick/imagick/issues/358
echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick # We ignore PHP 8.3.2 until it's fixed
echo "extension=imagick.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini # if [ "$VERSION" != "8.3.2" -a "$VERSION" != "8.3.6" -a "$VERSION" != "8.3.9" -a "$VERSION" != "8.3.12" ]; then
# echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick
# echo "extension=imagick.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
# fi
ln -s /srv/conf/php-fpm/php.ini /opt/techs/php-$VERSION/etc/conf.d/99-app.ini ln -s /srv/conf/php-fpm/php.ini /opt/techs/php-$VERSION/etc/conf.d/99-app.ini

View file

@ -18,3 +18,10 @@ cd ruby-$VERSION
./configure --prefix=/opt/techs/ruby-$VERSION ./configure --prefix=/opt/techs/ruby-$VERSION
make -j make -j
make install make install
/opt/techs/ruby-${VERSION}/bin/gem update --system
/opt/techs/ruby-${VERSION}/bin/gem install passenger
git clone --depth 1 https://github.com/rbenv/rbenv.git /opt/techs/ruby-$VERSION/rbenv
ln -s /opt/techs/ruby-$VERSION/rbenv/libexec/rbenv /opt/techs/ruby-$VERSION/bin/rbenv

View file

@ -1,4 +1,16 @@
export PATH=/srv/bin/primary_tech:/srv/bin/primary_tech/sbin:/srv/bin:$PATH:/usr/sbin:/sbin export PATH=/srv/bin/primary_tech:/srv/bin/primary_tech/sbin:/srv/bin:$PATH:/usr/sbin:/sbin
export PATH=$PATH:/srv/bin/active_bun
export PATH=$PATH:/srv/bin/active_deno
export PATH=$PATH:/srv/bin/active_golang
export PATH=$PATH:/srv/bin/active_node
export PATH=$PATH:/srv/bin/active_openjdk
export PATH=$PATH:/srv/bin/active_php
export PATH=$PATH:/srv/bin/active_python
export PATH=$PATH:/srv/bin/active_ruby
# Ruby related variables
export BUNDLE_PATH=/srv/tmp/cache
export GEM_HOME=/srv/.gem
# Use only if the shell is opened via SSH # Use only if the shell is opened via SSH
if [ -n "$SSH_TTY" ]; then if [ -n "$SSH_TTY" ]; then

View file

@ -1,9 +1,9 @@
worker_processes 1; worker_processes 1;
error_log stderr; error_log stderr;
pid /srv/run/nginx.pid; pid /srv/run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events { events {
worker_connections 1024; worker_connections 1024;
@ -82,3 +82,6 @@ http {
include /srv/conf/nginx.d/*; include /srv/conf/nginx.d/*;
} }
include /srv/conf/nginx.main.d/*;

74
examples/bun/app.js Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,9 @@
{
"name": "welcome",
"version": "0.1.0",
"description": "Welcome page by Roští.cz",
"author": "Adam Štrauch <cx@initd.cz>",
"scripts": {
"start": "/srv/bin/primary_tech/bun run app.js"
}
}

View file

@ -0,0 +1,14 @@
[program:app]
command=/srv/bin/primary_tech/bun run start
environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin"
stopasgroup=true
directory=/srv/app
process_name=app
autostart=true
autorestart=true
stdout_logfile=/srv/log/bun.log
stdout_logfile_maxbytes=2MB
stdout_logfile_backups=5
stdout_capture_maxbytes=2MB
stdout_events_enabled=false
redirect_stderr=true

View file

@ -50,7 +50,7 @@
<p>Nyní je nutné přihlásit se do kontejneru s vaší aplikací přes SSH a použít příkaz <em>rosti</em> k základnímu nastavení prostředí. Přístupy najdete v naší administraci v info kartě aplikace.</p> <p>Nyní je nutné přihlásit se do kontejneru s vaší aplikací přes SSH a použít příkaz <em>rosti</em> k základnímu nastavení prostředí. Přístupy najdete v naší administraci v info kartě aplikace.</p>
</div> </div>
<p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p> <p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p>
<p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="http://twitter.com/rosti_cz">@rosti_cz</a></p> <p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="https://rosti.social/@we">@we@rosti.social</a></p>
</div> </div>
</div> </div>
<script type="application/javascript"> <script type="application/javascript">

View file

@ -55,7 +55,7 @@ for await (const request of server) {
<p>HTTP server vaší aplikace spusťte na portu <code>8080</code>. Na jiném nebude fungovat.</p> <p>HTTP server vaší aplikace spusťte na portu <code>8080</code>. Na jiném nebude fungovat.</p>
</div> </div>
<p>V případě problémů se prosím obraťte na <a href=\"mailto:podpora@rosti.cz\">technickou podporu</a> nebo na <a href=\"https://docs.rosti.cz/\" target=\"_blank\">dokumentaci</a>.</p> <p>V případě problémů se prosím obraťte na <a href=\"mailto:podpora@rosti.cz\">technickou podporu</a> nebo na <a href=\"https://docs.rosti.cz/\" target=\"_blank\">dokumentaci</a>.</p>
<p>Tým <a href=\"https://rosti.cz\">Roští.cz</a> | <a href=\"http://twitter.com/rosti_cz\">@rosti_cz</a></p> <p>Tým <a href=\"https://rosti.cz\">Roští.cz</a> | <a href=\"https://rosti.social/@we\">@we@rosti.social</a></p>
</div> </div>
</div> </div>
<script type=\"application/javascript\"> <script type=\"application/javascript\">

BIN
examples/golang/example_app Executable file

Binary file not shown.

86
examples/golang/main.go Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
[program:app]
command=/srv/app/example_app
environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin"
stopasgroup=true
directory=/srv/app
process_name=app
autostart=true
autorestart=true
stdout_logfile=/srv/log/golang.log
stdout_logfile_maxbytes=2MB
stdout_logfile_backups=5
stdout_capture_maxbytes=2MB
stdout_events_enabled=false
redirect_stderr=true

158
examples/node/Dockerfile Normal file
View file

@ -0,0 +1,158 @@
FROM debian:bookworm
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget gpg
RUN echo "deb http://deb.debian.org/debian/ bookworm main contrib non-free" > /etc/apt/sources.list && \
echo "deb http://security.debian.org/debian-security bookworm-security main" >> /etc/apt/sources.list && \
echo "deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free" >> /etc/apt/sources.list
RUN DEBIAN_FRONTEND=noninteractive apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales libffi-dev \
libssl-dev default-libmysqlclient-dev ca-certificates libpq-dev libjpeg62 libjpeg-dev \
libpng-dev libpng-dev build-essential git mercurial build-essential \
libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev \
libgdbm-dev libgd-dev cron git subversion vim nano mc htop procps \
dropbear gettext wget redis-server memcached supervisor curl ssh \
mariadb-client postgresql-client-15 postgresql-15-postgis-3-scripts bind9-host dnsutils nginx nginx-extras libnginx-mod-http-image-filter \
libxml2-dev libxslt1-dev openssh-sftp-server links2 lynx \
imagemagick libmagick++-6.q16-dev libmagick++-6.q16hdri-dev libmagickwand-dev ncdu libsodium-dev \
python3 python3-pip python3-virtualenv \
libcurl4-openssl-dev python3-dev libproj-dev gdal-bin libmemcached-dev swig mutt \
ffmpeg libyaml-dev libc-client2007e-dev libonig-dev libkrb5-dev dialog \
whiptail tmux rsync nmap libzip-dev libfreetype6-dev \
jpegoptim optipng pngquant gifsicle webp libvpx-dev libwebp-dev jq inotify-tools ripgrep \
wkhtmltopdf libzbar0
# This is stange thing in Debian 12, it blocks installation of chromium
RUN DEBIAN_FRONTEND=noninteractive apt-get remove -y luit
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y chromium
WORKDIR /srv
RUN useradd -d /srv app -s /bin/bash
RUN usermod -G crontab -a app
RUN rm /etc/localtime
RUN ln -s /usr/share/zoneinfo/Europe/Prague /etc/localtime
ADD /etc/locale.gen /etc/
RUN locale-gen
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV TERM xterm
#############
# Techs
#############
## Node.js
# https://nodejs.org/en/about/previous-releases
WORKDIR /usr/src
ADD build_node.sh /usr/local/bin/build_node.sh
RUN build_node.sh 18.20.4
RUN build_node.sh 20.15.1
RUN build_node.sh 21.7.3
RUN build_node.sh 22.4.1
## Python
# https://www.python.org/downloads/
WORKDIR /usr/src
ADD build_python.sh /usr/local/bin/build_python.sh
RUN build_python.sh 3.11.9
RUN build_python.sh 3.12.4
## PHP 8
# https://www.php.net/downloads.php
ADD build_php8.sh /usr/local/bin/build_php8.sh
RUN build_php8.sh 8.2.15
RUN build_php8.sh 8.2.21
RUN build_php8.sh 8.3.6
RUN build_php8.sh 8.3.9
## Ruby
# https://www.ruby-lang.org/en/downloads/releases/
WORKDIR /usr/src
ADD build_ruby.sh /usr/local/bin/build_ruby.sh
RUN build_ruby.sh 3.2.2
RUN build_ruby.sh 3.3.1
## Deno
ADD build_deno.sh /usr/local/bin/build_deno.sh
# 2024/05
RUN build_deno.sh 1.43.6
RUN build_deno.sh 1.45.1
# Bun
ADD build_bun.sh /usr/local/bin/build_bun.sh
RUN build_bun.sh 1.1.18
# OpenJDK
# From here: https://jdk.java.net/
ADD build_openjdk.sh /usr/local/bin/build_openjdk.sh
RUN build_openjdk.sh 22.0.2 c9ecb94cd31b495da20a27d4581645e8
# Golang
# From here: https://go.dev/dl/
ADD build_golang.sh /usr/local/bin/build_golang.sh
RUN build_golang.sh 1.22.5
#############
# WKHTMLTOX This is not in development anymore so we will remove it with next version of Debian
WORKDIR /usr/src
RUN apt install -f xfonts-75dpi && \
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb && \
dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb && \
rm wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
#############
## Support tools and miscellaneous stuff
RUN rm -f /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/*
ADD /scripts/enable_redis.sh /usr/local/bin/enable-redis
ADD /scripts/enable_memcached.sh /usr/local/bin/enable-memcached
RUN chmod 755 /usr/local/bin/*
ADD /etc/supervisord.conf /etc/supervisor/supervisord.conf
ADD /examples /opt/examples
ADD /etc/bashrc_local /opt/etc/bashrc_local
ADD /etc/bash_profile /opt/etc/bash_profile
ADD /etc/vimrc /opt/etc/vimrc
RUN mkdir -p /opt/etc/bashrc
RUN mkdir -p /opt/etc/appinit
ADD /etc/bashrc/common.sh /opt/etc/bashrc/
ADD /etc/nginx.conf /etc/nginx/nginx.conf
RUN rmdir /var/lib/nginx
RUN ln -s /srv/var/nginx /var/lib/nginx
RUN chown app:app /var/log/nginx -R
RUN chown app:app /home -R
# Start script
ADD /start.sh /start.sh
RUN chmod 755 /start.sh
## Roští script
RUN apt-get install -y fish
ADD ./gen_rosti.fish /usr/local/bin/
ADD ./rosti.tmpl.sh /usr/src/
ADD ./Dockerfile /usr/src/
RUN cd /usr/src && /usr/local/bin/gen_rosti.fish > /usr/local/bin/rosti && chmod 755 /usr/local/bin/rosti
## Cleaning
RUN apt-get clean && rm -rf /usr/src/*
VOLUME /srv
WORKDIR /srv
EXPOSE 8000 22
ENTRYPOINT ["/start.sh"]

View file

@ -58,7 +58,7 @@ var server = http.createServer(function (request, response) {
<p>HTTP server vaší aplikace spusťte na portu <code>8080</code>. Na jiném nebude fungovat. Původní port 8000 nyní patří Nginxu, za kterým je vaše aplikace schovaná.</p> <p>HTTP server vaší aplikace spusťte na portu <code>8080</code>. Na jiném nebude fungovat. Původní port 8000 nyní patří Nginxu, za kterým je vaše aplikace schovaná.</p>
</div> </div>
<p>V případě problémů se prosím obraťte na <a href=\"mailto:podpora@rosti.cz\">technickou podporu</a> nebo na <a href=\"https://docs.rosti.cz/\" target=\"_blank\">dokumentaci</a>.</p> <p>V případě problémů se prosím obraťte na <a href=\"mailto:podpora@rosti.cz\">technickou podporu</a> nebo na <a href=\"https://docs.rosti.cz/\" target=\"_blank\">dokumentaci</a>.</p>
<p>Tým <a href=\"https://rosti.cz\">Roští.cz</a> | <a href=\"http://twitter.com/rosti_cz\">@rosti_cz</a></p> <p>Tým <a href=\"https://rosti.cz\">Roští.cz</a> | <a href=\"https://rosti.social/@we\">@we@rosti.social</a></p>
</div> </div>
</div> </div>
<script type=\"application/javascript\"> <script type=\"application/javascript\">

102
examples/openjdk/app.java Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
[program:app]
command=/srv/bin/primary_tech/java /srv/app/app.java
environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin"
stopasgroup=true
directory=/srv/app
process_name=app
autostart=true
autorestart=true
stdout_logfile=/srv/log/openjdk.log
stdout_logfile_maxbytes=2MB
stdout_logfile_backups=5
stdout_capture_maxbytes=2MB
stdout_events_enabled=false
redirect_stderr=true

View file

@ -49,7 +49,7 @@
</p> </p>
</div> </div>
<p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p> <p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p>
<p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="http://twitter.com/rosti_cz">@rosti_cz</a></p> <p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="https://rosti.social/@we">@we@rosti.social</a></p>
</div> </div>
</div> </div>
<script type="application/javascript"> <script type="application/javascript">

View file

@ -71,7 +71,7 @@ application = get_wsgi_application()
<p>Do souboru <code>/srv/app/init.sh</code> můžete napsat příkazy, které se mají spustit po každém restart kontejneru. Můžete si tak usnadnit třeba deployment.</p> <p>Do souboru <code>/srv/app/init.sh</code> můžete napsat příkazy, které se mají spustit po každém restart kontejneru. Můžete si tak usnadnit třeba deployment.</p>
</div> </div>
<p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p> <p>V případě problémů se prosím obraťte na <a href="mailto:podpora@rosti.cz">technickou podporu</a> nebo na <a href="https://docs.rosti.cz/" target="_blank">dokumentaci</a>.</p>
<p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="http://twitter.com/rosti_cz">@rosti_cz</a></p> <p>Tým <a href="https://rosti.cz">Roští.cz</a> | <a href="https://rosti.social/@we">@we@rosti.social</a></p>
</div> </div>
</div> </div>
<script type="application/javascript"> <script type="application/javascript">

File diff suppressed because one or more lines are too long

65
examples/ruby/index.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
[program:app] [program:app]
command=/srv/bin/primary_tech/ruby app.rb command=/srv/bin/primary_tech/passenger start --port 8000 --pid-file /srv/run/passenger.pid
environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin" environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin",GEM_HOME=/srv/.gem,BUNDLE_PATH=/srv/tmp/cache
stopasgroup=true stopasgroup=true
directory=/srv/app directory=/srv/app
process_name=app process_name=app

View file

@ -4,9 +4,14 @@ set TECHS_FILE /tmp/techs.txt
echo -n > $TECHS_FILE echo -n > $TECHS_FILE
for line in (cat Dockerfile | grep "RUN build_") for line in (cat Dockerfile | grep "build_" | grep -v "/usr/local")
set VERSION (echo $line | cut -d " " -f 3) set line (echo $line | sed "s/RUN //")
set TECH_SCRIPT (echo $line | cut -d " " -f 2) set line (echo $line | sed "s/ADD //")
set line (echo $line | sed "s/& \\\//")
set line (echo $line | sed "s/^[ ]*//")
set VERSION (echo $line | cut -d " " -f 2)
set TECH_SCRIPT (echo $line | cut -d " " -f 1)
switch $TECH_SCRIPT switch $TECH_SCRIPT
case "build_php.sh" case "build_php.sh"
@ -27,6 +32,15 @@ for line in (cat Dockerfile | grep "RUN build_")
case "build_deno.sh" case "build_deno.sh"
set TECH deno set TECH deno
set TECH_VERBOSE Deno set TECH_VERBOSE Deno
case "build_bun.sh"
set TECH bun
set TECH_VERBOSE Bun
case "build_golang.sh"
set TECH golang
set TECH_VERBOSE Golang
case "build_openjdk.sh"
set TECH openjdk
set TECH_VERBOSE OpenJDK
case '*' case '*'
set TECH unknown set TECH unknown
end end

View file

@ -19,12 +19,16 @@ with open("Dockerfile") as f:
if line.startswith("FROM debian:"): if line.startswith("FROM debian:"):
image = line.split(" ")[1].strip() image = line.split(" ")[1].strip()
continue continue
if line.startswith("RUN build_"): if "build_" in line and "ADD" not in line:
line = line.replace("RUN ", "").strip()
line = line.replace("& \\", "")
line = line.lstrip(" ")
parts = line.split(" ") parts = line.split(" ")
name = parts[1].replace("build_", "").replace(".sh", "") name = parts[0].replace("build_", "").replace(".sh", "")
if name.startswith("php"): if name.startswith("php"):
name = "php" name = "php"
version = line.split(" ")[2].strip() version = parts[1].strip()
if name not in output["techs"]: if name not in output["techs"]:
output["techs"][name] = { output["techs"][name] = {
"versions": [], "versions": [],
@ -32,7 +36,7 @@ with open("Dockerfile") as f:
output["techs"][name]["versions"].append(version) output["techs"][name]["versions"].append(version)
# os.system(f"docker pull {image}") # os.system(f"docker pull {image}")
system_version = subprocess.check_output(f"podman run --rm {image} cat /etc/debian_version", shell=True) system_version = subprocess.check_output(f"docker run --rm {image} cat /etc/debian_version", shell=True)
output["system"]["version"] = system_version.strip().decode() output["system"]["version"] = system_version.strip().decode()
print(json.dumps(output, indent=4)) print(json.dumps(output, indent=4))

View file

@ -3,11 +3,14 @@
. ~/.bashrc . ~/.bashrc
# DEFAULT VERSIONS # DEFAULT VERSIONS
VERSION_PYTHON="3.11.5" VERSION_NODE="23.6.0"
VERSION_PHP="8.2.9" VERSION_PYTHON="3.13.1"
VERSION_NODE="20.6.1" VERSION_PHP="8.4.3"
VERSION_RUBY="3.2.2" VERSION_RUBY="3.4.1"
VERSION_DENO="1.36.4" VERSION_DENO="2.1.6"
VERSION_BUN="1.1.45"
VERSION_OPENJDK="23.0.1"
VERSION_GOLANG="1.23.5"
WIDTH=180 WIDTH=180
HEIGHT=25 HEIGHT=25
@ -15,7 +18,7 @@ HEIGHT=25
TECHDIR=/opt/techs TECHDIR=/opt/techs
PRIMARYDIR=/srv/bin/primary_tech PRIMARYDIR=/srv/bin/primary_tech
# Usage: rosti php|python|node|memcached|redis OPTINAL_VERSION # Usage: rosti php|python|node|bun|memcached|redis OPTINAL_VERSION
# #
# This script helps to configure the environment for selected # This script helps to configure the environment for selected
# language/technology/service. The language or service can be # language/technology/service. The language or service can be
@ -51,6 +54,15 @@ function setTech() {
if [ -e /srv/app/supervisor.conf ]; then if [ -e /srv/app/supervisor.conf ]; then
mv /srv/app/supervisor.conf /srv/conf/supervisor.d/$name.conf mv /srv/app/supervisor.conf /srv/conf/supervisor.d/$name.conf
fi fi
# Ruby initialization specifics
if [ "$name" = "ruby" ]; then
mkdir -p /srv/app/public
rm /srv/conf/nginx.d/app.conf
mv /srv/app/index.html /srv/app/public/index.html
rm -rf /srv/conf/nginx.d
rm -f /srv/conf/supervisor.d/nginx.conf
fi
else else
echo "IMPORTANT: /srv/app found so no configuration or files are copied, make sure the application is ok after this process" echo "IMPORTANT: /srv/app found so no configuration or files are copied, make sure the application is ok after this process"
fi fi
@ -84,7 +96,6 @@ function setTech() {
test ! -e /srv/conf/php-fpm/php.ini && ln -s /srv/conf/php-fpm/php.ini /opt/techs/$tech/etc/conf.d/app.ini test ! -e /srv/conf/php-fpm/php.ini && ln -s /srv/conf/php-fpm/php.ini /opt/techs/$tech/etc/conf.d/app.ini
# And remove unneeded ones # And remove unneeded ones
# TODO: not sure how good idea this is
rm -f /srv/app/php-fpm.conf /srv/app/pool_app.conf /srv/app/php.ini rm -f /srv/app/php-fpm.conf /srv/app/pool_app.conf /srv/app/php.ini
fi fi
@ -100,7 +111,7 @@ function setTech() {
# Same thing we do for nginx but if the file exist it's not rewritten. # Same thing we do for nginx but if the file exist it's not rewritten.
# Except if the file is in /srv/app, then it's moved to /srv/conf/nginx.d # Except if the file is in /srv/app, then it's moved to /srv/conf/nginx.d
if [ ! -e /srv/conf/nginx.d/app.conf -o -e /srv/app/nginx.conf ]; then if [ ! -e /srv/conf/nginx.d/app.conf -o -e /srv/app/nginx.conf ]; then
mkdir -p /srv/conf/nginx.d mkdir -p /srv/conf/nginx.d;
if [ -e /srv/app/nginx.conf ]; then if [ -e /srv/app/nginx.conf ]; then
mv /srv/app/nginx.conf /srv/conf/nginx.d/app.conf mv /srv/app/nginx.conf /srv/conf/nginx.d/app.conf
else else
@ -202,6 +213,24 @@ function quickTech() {
fi fi
setTech $TECH-$VERSION setTech $TECH-$VERSION
;; ;;
"bun")
if [ -z "$VERSION" ]; then
VERSION=$VERSION_BUN
fi
setTech $TECH-$VERSION
;;
"openjdk")
if [ -z "$VERSION" ]; then
VERSION=$VERSION_OPENJDK
fi
setTech $TECH-$VERSION
;;
"golang")
if [ -z "$VERSION" ]; then
VERSION=$VERSION_GOLANG
fi
setTech $TECH-$VERSION
;;
"memcached") "memcached")
setService $TECH setService $TECH
;; ;;

View file

@ -63,7 +63,11 @@ if [ ! -e /srv/.vimrc ]; then
fi fi
# Crontab # Crontab
test ! -e /srv/conf/crontab && touch /srv/conf/crontab if [ ! -e /srv/conf/crontab ]; then
echo 'PATH=/srv/bin/primary_tech:/srv/bin/primary_tech/sbin:/srv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin:/sbin:/srv/bin/primary_tech:/srv/bin/primary_tech/sbin:/srv/bin:/srv/bin/active_bun:/srv/bin/active_deno:/srv/bin/active_golang:/srv/bin/active_node:/srv/bin/active_openjdk:/srv/bin/active_php:/srv/bin/active_python:/srv/bin/active_ruby' > /srv/conf/crontab
echo "" >> /srv/conf/crontab
echo "" >> /srv/conf/crontab
fi
if [ -e /srv/conf/crontab ]; then if [ -e /srv/conf/crontab ]; then
crontab -u app /srv/conf/crontab crontab -u app /srv/conf/crontab
fi fi

View file

@ -24,10 +24,10 @@ fi
CONTAINER_NAME=dev_test CONTAINER_NAME=dev_test
$DOCKER stop $CONTAINER_NAME &>/dev/null $DOCKER stop $CONTAINER_NAME &>/dev/null
COUNT=`cat Dockerfile | grep "RUN build_" | sed "s/RUN build_//" | sed "s/\.sh//" | sed "s/php8/php/" | wc -l` COUNT=`cat Dockerfile | grep -e "build_" | grep -v "/usr/local" | sed "s/RUN //" | sed "s/ADD //" | sed 's/& \\\//' | sed "s/^[ ]*//" | sed "s/build_//" | sed "s/\.sh//" | sed "s/php8/php/" | wc -l`
I=1 I=1
cat Dockerfile | grep "RUN build_" | sed "s/RUN build_//" | sed "s/\.sh//" | sed "s/php8/php/" | \ cat Dockerfile | grep -e "build_" | grep -v "/usr/local" | sed "s/RUN //" | sed "s/ADD //" | sed 's/& \\//' | sed "s/^[ ]*//" | sed "s/build_//" | sed "s/\.sh//" | sed "s/php8/php/" | \
while read line while read line
do do
tech=`echo $line | cut -d " " -f 1` tech=`echo $line | cut -d " " -f 1`
@ -53,6 +53,7 @@ do
echo -e "${BRed}.. ${Yel}cleaning this round${RCol}" echo -e "${BRed}.. ${Yel}cleaning this round${RCol}"
$DOCKER stop $CONTAINER_NAME &>/dev/null || exit 1 $DOCKER stop $CONTAINER_NAME &>/dev/null || exit 1
sleep 1
((I++)) ((I++))