diff --git a/_experemental/staytus/.docker-repository.yml b/_experemental/staytus/.docker-repository.yml new file mode 100644 index 000000000..c455bd083 --- /dev/null +++ b/_experemental/staytus/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/staytus diff --git a/_experemental/staytus/.dockerignore b/_experemental/staytus/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/_experemental/staytus/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/_experemental/staytus/Dockerfile b/_experemental/staytus/Dockerfile index e21782baf..225332bd5 100644 --- a/_experemental/staytus/Dockerfile +++ b/_experemental/staytus/Dockerfile @@ -1,32 +1,31 @@ FROM ruby:buster LABEL maintainer="Tim Perry ; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive - + USER root +COPY --from=epicmorg/prod /etc/locale.gen /etc/locale.gen +COPY --from=epicmorg/prod /etc/apt/sources.list /etc/apt/sources.list +COPY --from=epicmorg/prod /etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg /etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg +COPY entrypoint.sh /entrypoint.sh + RUN apt update && \ apt dist-upgrade -y && \ - # Set password to temp-password - reset to random password on startup - echo mysql-server mysql-server/root_password password temp-password | debconf-set-selections && \ - echo mysql-server mysql-server/root_password_again password temp-password | debconf-set-selections && \ - # Instal MySQL for data, node as the JS engine for uglifier - apt-get install -y mysql-server nodejs git && \ + # node as the JS engine for uglifier + apt-get install -y nodejs git && \ gem update --system && \ gem install bundler && \ rm -rfv /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN cd /opt && \ git clone https://github.com/adamcooke/staytus.git staytus && \ - cd /opt/staytus && \ - bundle update --all && \ + cd /opt/staytus && \ + bundle update --all && \ bundle install --deployment --without development:test -ENTRYPOINT /opt/staytus/docker-start.sh +ENTRYPOINT /entrypoint.sh -# Persists all DB state -VOLUME /var/lib/mysql - -# Persists copies of other relevant files (DB config, custom themes). Contents of this are copied +# Persists copies of other relevant files (DB config, custom themes). Contents of this are copied # to the relevant places each time the container is started VOLUME /opt/staytus/persisted diff --git a/_experemental/staytus/Makefile b/_experemental/staytus/Makefile new file mode 100644 index 000000000..cb4650ff7 --- /dev/null +++ b/_experemental/staytus/Makefile @@ -0,0 +1,4 @@ +all: st + +st: + docker build --compress -t epicmorg/staytus:latest . diff --git a/_experemental/staytus/README.md b/_experemental/staytus/README.md index a72259b65..5790b4917 100644 --- a/_experemental/staytus/README.md +++ b/_experemental/staytus/README.md @@ -1 +1,36 @@ +## Info This is a custom improved image from this [original repository](https://github.com/adamcooke/staytus). + +## How to +* Install databese and setup user +* Install container and connect to database + +## Compose example + +```yml +version: '3.7' +services: + mysql: + container_name: mysql + image: mysql:5.7 + restart: always + staytus: + container_name: staytus + image: epicmorg/staytus + restart: always + ports: + - "5000:5000" + volumes: + - staytus-persisted:/opt/staytus/persisted + environment: + - DB_USER=root + - DB_PASSWORD=password + - DB_HOST=mysql #(dns or ip) + depends_on: + - mysql + tmpfs: + - /tmp +volumes: + staytus-persisted: + external: true +``` diff --git a/_experemental/staytus/entrypoint.sh b/_experemental/staytus/entrypoint.sh new file mode 100755 index 000000000..1753ddb92 --- /dev/null +++ b/_experemental/staytus/entrypoint.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +: ${DB_USER:=root} +: ${DB_PASSWORD:=root} +: ${DB_HOST:=127.0.0.1} +#: ${DB_PORT:=3306} + +cd /opt/staytus + +# Configure DB with random password, if not already configured +if [ ! -f /opt/staytus/persisted/config/database.yml ]; then + export DB_PASSWORD=${DB_PASSWORD} + + mysqladmin -u root -ptemp-password password ${DB_PASSWORD} + echo "CREATE DATABASE staytus CHARSET utf8 COLLATE utf8_unicode_ci" | mysql -u root -p${DB_PASSWORD} + + cp config/database.example.yml config/database.yml + sed -i "s/username:.*/username: ${DB_USER}/" config/database.yml + sed -i "s|password:.*|password: ${DB_PASSWORD}|" config/database.yml + sed -i "s|host:.*|host: ${DB_HOST}|" config/database.yml + + # Copy the config to persist it, and later copy back on each start, to persist this config file + # without persisting all of /config (which is mostly app code) + mkdir /opt/staytus/persisted/config + cp config/database.yml /opt/staytus/persisted/config/database.yml + + bundle exec rake staytus:build staytus:install +else + # Use the previously saved config from the persisted volume + cp /opt/staytus/persisted/config/database.yml config/database.yml + # TODO also copy themes back and forth too + + # If already configured, check if there are any migrations to run + bundle exec rake staytus:build staytus:upgrade +fi + +bundle exec foreman start \ No newline at end of file