Remove unmaintained 5 branch and debian 9
This commit is contained in:
parent
a8ee4e0311
commit
36e3d2e8d3
|
|
@ -1,23 +0,0 @@
|
|||
FROM bitnami/minideb-extras:stretch-r470
|
||||
LABEL maintainer "Bitnami <containers@bitnami.com>"
|
||||
|
||||
# Install required system packages and dependencies
|
||||
RUN install_packages build-essential default-libmysqlclient-dev ghostscript imagemagick libc6 libcomerr2 libcurl3 libffi6 libgcc1 libgcrypt20 libgmp-dev libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libhogweed4 libidn11 libidn2-0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libncurses5 libnettle6 libnghttp2-14 libp11-kit0 libpq5 libpsl5 libreadline-dev libreadline7 librtmp1 libsasl2-2 libssh2-1 libssl1.0.2 libssl1.1 libstdc++6 libtasn1-6 libtinfo5 libunistring0 libxml2-dev libxslt1-dev netcat-traditional zlib1g zlib1g-dev
|
||||
RUN bitnami-pkg install ruby-2.6.4-0 --checksum d3850ff8359e897e10fd224371b34a5334e3f2ae1f79a73ab138d74987d61a72
|
||||
RUN bitnami-pkg install mysql-client-10.3.17-0 --checksum 71d59fafc3e7e3e598af0c2b6788d77558630afe647ec1f922ffdd5025f3d737
|
||||
RUN bitnami-pkg install git-2.23.0-0 --checksum 54731b0fecdf38ab559cdd76311a229915bf0581b213a5806d3c7d56c5399981
|
||||
RUN bitnami-pkg install rails-5.2.3-0-0 --checksum abeeb5eb4fcfeb118f509715160ea072794b6d37e2bf6e88542789ecd9d20c1c
|
||||
RUN mkdir /app && chown bitnami:bitnami /app
|
||||
|
||||
COPY rootfs /
|
||||
ENV BITNAMI_APP_NAME="rails" \
|
||||
BITNAMI_IMAGE_VERSION="5.2.3-0-debian-9-r121" \
|
||||
PATH="/opt/bitnami/ruby/bin:/opt/bitnami/mysql/bin:/opt/bitnami/git/bin:/opt/bitnami/rails/bin:$PATH" \
|
||||
RAILS_ENV="development"
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
WORKDIR /app
|
||||
USER bitnami
|
||||
ENTRYPOINT [ "/app-entrypoint.sh" ]
|
||||
CMD [ "bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "3000" ]
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
version: '2'
|
||||
services:
|
||||
mariadb:
|
||||
image: 'bitnami/mariadb:10.3'
|
||||
environment:
|
||||
- ALLOW_EMPTY_PASSWORD=yes
|
||||
|
||||
myapp:
|
||||
tty: true # Enables debugging capabilities when attached to this container.
|
||||
image: bitnami/rails:5
|
||||
environment:
|
||||
- DATABASE_HOST=mariadb
|
||||
- DATABASE_NAME=my_app_development
|
||||
depends_on:
|
||||
- mariadb
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- .:/app
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
# set -o xtrace
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
# Load libraries
|
||||
. /opt/bitnami/base/functions
|
||||
|
||||
# Constants
|
||||
INIT_SEM=/tmp/initialized.sem
|
||||
|
||||
# Functions
|
||||
|
||||
########################
|
||||
# Ensure gems are up to date
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# Boolean
|
||||
#########################
|
||||
gems_up_to_date() {
|
||||
bundle check 1> /dev/null
|
||||
}
|
||||
|
||||
########################
|
||||
# Wait for database to be ready
|
||||
# Globals:
|
||||
# DATABASE_HOST
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
wait_for_db() {
|
||||
local db_host="${DATABASE_HOST:-mariadb}"
|
||||
local db_address
|
||||
db_address="$(getent hosts "$db_host" | awk '{ print $1 }')"
|
||||
counter=0
|
||||
log "Connecting to MariaDB at $db_address"
|
||||
while ! nc -z "$db_host" 3306; do
|
||||
counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
log "Error: Couldn't connect to MariaDB."
|
||||
exit 1
|
||||
fi
|
||||
log "Trying to connect to mariadb at $db_address. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
print_welcome_page
|
||||
|
||||
if [[ "$1" = "bundle" ]] && [[ "$2" = "exec" ]]; then
|
||||
if [[ -f /app/config.ru ]]; then
|
||||
log "Rails project found. Skipping creation..."
|
||||
else
|
||||
log "Creating new Rails project..."
|
||||
rails new . --skip-bundle --database mysql
|
||||
# Add mini_racer
|
||||
sed -i -e "s/# gem 'mini_racer'/gem 'mini_racer'/" Gemfile
|
||||
# TODO: substitution using 'yq' once they support anchors
|
||||
# Related issue: https://github.com/mikefarah/yq/issues/178
|
||||
# E.g: yq w -i /app/config/database.yml default.host '<%= ENV.fetch("DATABASE_HOST") { mariadb } %>'
|
||||
# E.g: yq w -i /app/config/database.yml development.database '<%= ENV.fetch("DATABASE_NAME") { mariadb } %>'
|
||||
log "Setting default host to \`${DATABASE_HOST:-mariadb}\`..."
|
||||
sed -i -e 's/host:.*$/host: <%= ENV.fetch("DATABASE_HOST", "mariadb") %>/g' /app/config/database.yml
|
||||
log "Setting development database to \`${DATABASE_NAME:-my_app_development}\`..."
|
||||
sed -i -e '1,/test:/ s/database:.*$/database: <%= ENV.fetch("DATABASE_NAME", "my_app_development") %>/g' /app/config/database.yml
|
||||
fi
|
||||
|
||||
if ! gems_up_to_date; then
|
||||
log "Installing/Updating Rails dependencies (gems)..."
|
||||
bundle install
|
||||
log "Gems updated!!"
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_WAIT ]]; then
|
||||
wait_for_db
|
||||
fi
|
||||
|
||||
if [[ -f $INIT_SEM ]]; then
|
||||
echo "#########################################################################"
|
||||
echo " "
|
||||
echo " App initialization skipped:"
|
||||
echo " Delete the file $INIT_SEM and restart the container to reinitialize"
|
||||
echo " You can alternatively run specific commands using docker-compose exec"
|
||||
echo " e.g docker-compose exec rails bundle exec rails db:migrate"
|
||||
echo " "
|
||||
echo "#########################################################################"
|
||||
else
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Configuring the database..."
|
||||
bundle exec rails db:create
|
||||
fi
|
||||
log "Initialization finished!!!"
|
||||
touch $INIT_SEM
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Applying database migrations (db:migrate)..."
|
||||
bundle exec rails db:migrate
|
||||
fi
|
||||
fi
|
||||
|
||||
exec tini -- "$@"
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
FROM bitnami/oraclelinux-extras:7-r451
|
||||
LABEL maintainer "Bitnami <containers@bitnami.com>"
|
||||
|
||||
# Install required system packages and dependencies
|
||||
RUN install_packages ca-certificates cyrus-sasl-lib gcc-c++ glibc keyutils-libs krb5-libs libcom_err libcurl libgcc libidn libselinux libssh2 libstdc++ libxml2 make mysql-devel nc ncurses-libs nspr nss nss-softokn-freebl nss-util openldap openssl-libs pcre pkgconfig readline zlib
|
||||
RUN bitnami-pkg install ruby-2.6.4-0 --checksum 8774fa00c7fbf9bd5e8af4425f20c466c606c9bdf2df4aee80db525bbd45ab49
|
||||
RUN bitnami-pkg install mysql-client-10.3.17-0 --checksum 83fd01acb88a54d028a327870cec66bf43f57f326814a16dc4626a5171742229
|
||||
RUN bitnami-pkg install git-2.23.0-0 --checksum 30618c63e72727b90b3cc3e7f8747e599ec11352b29812285a27029807d8766d
|
||||
RUN bitnami-pkg install rails-5.2.3-0-0 --checksum 57f3f739ebc3051ee3376f0d8087161a058d67bae8f88a248f457529e7e4ea72
|
||||
RUN mkdir /app && chown bitnami:bitnami /app
|
||||
|
||||
COPY rootfs /
|
||||
ENV BITNAMI_APP_NAME="rails" \
|
||||
BITNAMI_IMAGE_VERSION="5.2.3-0-ol-7-r132" \
|
||||
PATH="/opt/bitnami/ruby/bin:/opt/bitnami/mysql/bin:/opt/bitnami/git/bin:/opt/bitnami/rails/bin:$PATH" \
|
||||
RAILS_ENV="development"
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
WORKDIR /app
|
||||
USER bitnami
|
||||
ENTRYPOINT [ "/app-entrypoint.sh" ]
|
||||
CMD [ "bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "3000" ]
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
version: '2'
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: 'bitnami/mariadb:10.3-ol-7'
|
||||
environment:
|
||||
- ALLOW_EMPTY_PASSWORD=yes
|
||||
|
||||
myapp:
|
||||
tty: true # Enables debugging capabilities when attached to this container.
|
||||
image: bitnami/rails:5-ol-7
|
||||
environment:
|
||||
- DATABASE_HOST=mariadb
|
||||
- DATABASE_NAME=my_app_development
|
||||
depends_on:
|
||||
- mariadb
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- .:/app
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
# set -o xtrace
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
# Load libraries
|
||||
. /opt/bitnami/base/functions
|
||||
|
||||
# Constants
|
||||
INIT_SEM=/tmp/initialized.sem
|
||||
|
||||
# Functions
|
||||
|
||||
########################
|
||||
# Ensure gems are up to date
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# Boolean
|
||||
#########################
|
||||
gems_up_to_date() {
|
||||
bundle check 1> /dev/null
|
||||
}
|
||||
|
||||
########################
|
||||
# Wait for database to be ready
|
||||
# Globals:
|
||||
# DATABASE_HOST
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
wait_for_db() {
|
||||
local db_host="${DATABASE_HOST:-mariadb}"
|
||||
local db_address
|
||||
db_address="$(getent hosts "$db_host" | awk '{ print $1 }')"
|
||||
counter=0
|
||||
log "Connecting to MariaDB at $db_address"
|
||||
while ! nc -z "$db_host" 3306; do
|
||||
counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
log "Error: Couldn't connect to MariaDB."
|
||||
exit 1
|
||||
fi
|
||||
log "Trying to connect to mariadb at $db_address. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
print_welcome_page
|
||||
|
||||
if [[ "$1" = "bundle" ]] && [[ "$2" = "exec" ]]; then
|
||||
if [[ -f /app/config.ru ]]; then
|
||||
log "Rails project found. Skipping creation..."
|
||||
else
|
||||
log "Creating new Rails project..."
|
||||
rails new . --skip-bundle --database mysql
|
||||
# Add mini_racer
|
||||
sed -i -e "s/# gem 'mini_racer'/gem 'mini_racer'/" Gemfile
|
||||
# TODO: substitution using 'yq' once they support anchors
|
||||
# Related issue: https://github.com/mikefarah/yq/issues/178
|
||||
# E.g: yq w -i /app/config/database.yml default.host '<%= ENV.fetch("DATABASE_HOST") { mariadb } %>'
|
||||
# E.g: yq w -i /app/config/database.yml development.database '<%= ENV.fetch("DATABASE_NAME") { mariadb } %>'
|
||||
log "Setting default host to \`${DATABASE_HOST:-mariadb}\`..."
|
||||
sed -i -e 's/host:.*$/host: <%= ENV.fetch("DATABASE_HOST", "mariadb") %>/g' /app/config/database.yml
|
||||
log "Setting development database to \`${DATABASE_NAME:-my_app_development}\`..."
|
||||
sed -i -e '1,/test:/ s/database:.*$/database: <%= ENV.fetch("DATABASE_NAME", "my_app_development") %>/g' /app/config/database.yml
|
||||
fi
|
||||
|
||||
if ! gems_up_to_date; then
|
||||
log "Installing/Updating Rails dependencies (gems)..."
|
||||
bundle install
|
||||
log "Gems updated!!"
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_WAIT ]]; then
|
||||
wait_for_db
|
||||
fi
|
||||
|
||||
if [[ -f $INIT_SEM ]]; then
|
||||
echo "#########################################################################"
|
||||
echo " "
|
||||
echo " App initialization skipped:"
|
||||
echo " Delete the file $INIT_SEM and restart the container to reinitialize"
|
||||
echo " You can alternatively run specific commands using docker-compose exec"
|
||||
echo " e.g docker-compose exec rails bundle exec rails db:migrate"
|
||||
echo " "
|
||||
echo "#########################################################################"
|
||||
else
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Configuring the database..."
|
||||
bundle exec rails db:create
|
||||
fi
|
||||
log "Initialization finished!!!"
|
||||
touch $INIT_SEM
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Applying database migrations (db:migrate)..."
|
||||
bundle exec rails db:migrate
|
||||
fi
|
||||
fi
|
||||
|
||||
exec tini -- "$@"
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
FROM bitnami/minideb:stretch
|
||||
LABEL maintainer "Bitnami <containers@bitnami.com>"
|
||||
|
||||
ENV PATH="/opt/bitnami/ruby/bin:/opt/bitnami/node/bin:/opt/bitnami/mysql/bin:/opt/bitnami/git/bin:/opt/bitnami/rails/bin:/opt/bitnami/nami/bin:$PATH"
|
||||
|
||||
COPY prebuildfs /
|
||||
# Install required system packages and dependencies
|
||||
RUN install_packages build-essential ca-certificates curl default-libmysqlclient-dev dirmngr ghostscript gnupg imagemagick libbz2-1.0 libc6 libcomerr2 libcurl3 libffi6 libgcc1 libgcrypt20 libgmp-dev libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libhogweed4 libidn11 libidn2-0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libncurses5 libnettle6 libnghttp2-14 libp11-kit0 libpq5 libpsl5 libreadline-dev libreadline7 librtmp1 libsasl2-2 libsqlite3-0 libssh2-1 libssl1.0.2 libssl1.1 libstdc++6 libtasn1-6 libtinfo5 libunistring0 libxml2-dev libxslt1-dev netcat-traditional procps sudo unzip zlib1g zlib1g-dev
|
||||
RUN /build/bitnami-user.sh && \
|
||||
/build/install-nami.sh
|
||||
RUN bitnami-pkg install ruby-2.6.5-0 --checksum 3a856a4569b5d4f59628209a1ab1b78619647bf1f4d5f11ca3ae6b28ee1e7fa9
|
||||
RUN bitnami-pkg install node-10.18.1-0 --checksum ea470130eeb8730473153d75bcdd8979032120fcad9aae7fc6730615b76d888c
|
||||
RUN bitnami-pkg install mysql-client-10.3.21-0 --checksum 19c6b964f289772a4e5963e22929133fa65222f66752eb29af715ce3d0b7ef0e
|
||||
RUN bitnami-pkg install git-2.25.0-0 --checksum 49b040c04ed41e5707e3aac4bbc13553a865dc16acd2053e50e4355d13a373d1
|
||||
RUN bitnami-pkg install rails-6.0.2-1-1 --checksum 5907cdc43f4d3a30e1141db8b4e92259d4824548771f6d044830591694c1cde2
|
||||
RUN apt-get update && apt-get upgrade && \
|
||||
rm -r /var/lib/apt/lists /var/cache/apt/archives
|
||||
RUN mkdir /app && chown bitnami:bitnami /app
|
||||
RUN /build/install-gosu.sh
|
||||
RUN /build/install-tini.sh
|
||||
|
||||
COPY rootfs /
|
||||
ENV BITNAMI_APP_NAME="rails" \
|
||||
BITNAMI_IMAGE_VERSION="6.0.2-1-debian-9-r27" \
|
||||
BUNDLE_BUILD__SASSC="--disable-march-tune-native" \
|
||||
RAILS_ENV="development"
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
WORKDIR /app
|
||||
USER bitnami
|
||||
ENTRYPOINT [ "/app-entrypoint.sh" ]
|
||||
CMD [ "bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "3000" ]
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
version: '2'
|
||||
services:
|
||||
mariadb:
|
||||
image: 'bitnami/mariadb:10.3'
|
||||
environment:
|
||||
- ALLOW_EMPTY_PASSWORD=yes
|
||||
|
||||
myapp:
|
||||
tty: true # Enables debugging capabilities when attached to this container.
|
||||
image: bitnami/rails:6
|
||||
environment:
|
||||
- DATABASE_HOST=mariadb
|
||||
- DATABASE_NAME=my_app_development
|
||||
depends_on:
|
||||
- mariadb
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- .:/app
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
useradd -ms /bin/bash bitnami
|
||||
mkdir -p /opt/bitnami && chown bitnami:bitnami /opt/bitnami
|
||||
sed -i -e 's/\s*Defaults\s*secure_path\s*=/# Defaults secure_path=/' /etc/sudoers
|
||||
echo 'bitnami ALL=NOPASSWD: ALL' >> /etc/sudoers
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
useradd -ms /bin/bash bitnami
|
||||
mkdir -p /opt/bitnami && chown bitnami:bitnami /opt/bitnami
|
||||
sed -i -e 's/\s*Defaults\s*secure_path\s*=/# Defaults secure_path=/' /etc/sudoers
|
||||
echo 'bitnami ALL=NOPASSWD: ALL' >> /etc/sudoers
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
VERSION="1.11"
|
||||
SHA256="0b843df6d86e270c5b0f5cbd3c326a04e18f4b7f9b8457fa497b0454c4b138d7"
|
||||
|
||||
curl --silent -L "https://github.com/tianon/gosu/releases/download/${VERSION}/gosu-amd64" > "/usr/local/bin/gosu"
|
||||
echo "$SHA256" "/usr/local/bin/gosu" | sha256sum --check
|
||||
chmod u+x "/usr/local/bin/gosu"
|
||||
mkdir -p "/opt/bitnami/licenses"
|
||||
curl --silent -L "https://raw.githubusercontent.com/tianon/gosu/master/LICENSE" > "/opt/bitnami/licenses/gosu-${VERSION}.txt"
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
curl --silent -L https://nami-prod.s3.amazonaws.com/tools/nami/releases/nami-1.0.0-1-linux-x64.tar.gz > /tmp/nami-linux-x64.tar.gz
|
||||
echo "80488279b056d5e9c183fe34097c5f496715ab16a602afcc9f78d59f15139a16 /tmp/nami-linux-x64.tar.gz" | sha256sum --check
|
||||
mkdir -p /opt/bitnami/nami /opt/bitnami/licenses
|
||||
tar xzf /tmp/nami-linux-x64.tar.gz --strip 1 -C /opt/bitnami/nami && rm /tmp/nami-linux-x64.tar.gz
|
||||
curl --silent -L https://raw.githubusercontent.com/bitnami/nami/master/COPYING > /opt/bitnami/licenses/nami-1.0.0-1.txt
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
GPG_KEY="595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7"
|
||||
GPG_KEY_FINGERPRINT="6380 DC42 8747 F6C3 93FE ACA5 9A84 159D 7001 A4E5"
|
||||
SERVERS=("ha.pool.sks-keyservers.net" "hkp://p80.pool.sks-keyservers.net:80" "keyserver.ubuntu.com" "hkp://keyserver.ubuntu.com:80" "pgp.mit.edu")
|
||||
VERSION="0.13.2"
|
||||
|
||||
for server in "${SERVERS[@]}"; do
|
||||
gpg --keyserver "$server" --recv-keys "$GPG_KEY" && break || :
|
||||
done
|
||||
gpg --fingerprint "$GPG_KEY" | grep -q "$GPG_KEY_FINGERPRINT"
|
||||
curl --silent -L "https://github.com/krallin/tini/releases/download/v${VERSION}/tini.asc" > "/tmp/tini.asc"
|
||||
curl --silent -L "https://github.com/krallin/tini/releases/download/v${VERSION}/tini" > "/usr/local/bin/tini"
|
||||
gpg --verify "/tmp/tini.asc" "/usr/local/bin/tini"
|
||||
chmod +x "/usr/local/bin/tini"
|
||||
mkdir -p "/opt/bitnami/licenses"
|
||||
curl --silent -L "https://raw.githubusercontent.com/krallin/tini/master/LICENSE" > "/opt/bitnami/licenses/tini-${VERSION}.txt"
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
curl --silent -L https://nami-prod.s3.amazonaws.com/tools/nami/releases/nami-1.0.0-1-linux-x64.tar.gz > /tmp/nami-linux-x64.tar.gz
|
||||
echo "80488279b056d5e9c183fe34097c5f496715ab16a602afcc9f78d59f15139a16 /tmp/nami-linux-x64.tar.gz" | sha256sum --check
|
||||
mkdir -p /opt/bitnami/nami /opt/bitnami/licenses
|
||||
tar xzf /tmp/nami-linux-x64.tar.gz --strip 1 -C /opt/bitnami/nami && rm /tmp/nami-linux-x64.tar.gz
|
||||
curl --silent -L https://raw.githubusercontent.com/bitnami/nami/master/COPYING > /opt/bitnami/licenses/nami-1.0.0-1.txt
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
[[ ${BASH_DEBUG:-false} = true ]] && set -x
|
||||
|
||||
# Constants
|
||||
MODULE="$(basename "$0")"
|
||||
BITNAMI_PREFIX=/opt/bitnami
|
||||
|
||||
# Color Palette
|
||||
RESET='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
|
||||
## Foreground
|
||||
BLACK='\033[38;5;0m'
|
||||
RED='\033[38;5;1m'
|
||||
GREEN='\033[38;5;2m'
|
||||
YELLOW='\033[38;5;3m'
|
||||
BLUE='\033[38;5;4m'
|
||||
MAGENTA='\033[38;5;5m'
|
||||
CYAN='\033[38;5;6m'
|
||||
WHITE='\033[38;5;7m'
|
||||
|
||||
## Background
|
||||
ON_BLACK='\033[48;5;0m'
|
||||
ON_RED='\033[48;5;1m'
|
||||
ON_GREEN='\033[48;5;2m'
|
||||
ON_YELLOW='\033[48;5;3m'
|
||||
ON_BLUE='\033[48;5;4m'
|
||||
ON_MAGENTA='\033[48;5;5m'
|
||||
ON_CYAN='\033[48;5;6m'
|
||||
ON_WHITE='\033[48;5;7m'
|
||||
|
||||
# Functions
|
||||
|
||||
########################
|
||||
# Print to STDERR
|
||||
# Arguments:
|
||||
# Message to print
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
stderr_print() {
|
||||
printf "%b\\n" "${*}" >&2
|
||||
}
|
||||
|
||||
########################
|
||||
# Log message
|
||||
# Arguments:
|
||||
# Message to log
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
log() {
|
||||
stderr_print "${NAMI_DEBUG:+${CYAN}${MODULE:-} ${MAGENTA}$(date "+%T.%2N ")}${RESET}${*}"
|
||||
}
|
||||
########################
|
||||
# Log an 'info' message
|
||||
# Arguments:
|
||||
# Message to log
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
info() {
|
||||
log "${GREEN}INFO ${RESET} ==> ${*}"
|
||||
}
|
||||
########################
|
||||
# Log message
|
||||
# Arguments:
|
||||
# Message to log
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
warn() {
|
||||
log "${YELLOW}WARN ${RESET} ==> ${*}"
|
||||
}
|
||||
########################
|
||||
# Log an 'error' message
|
||||
# Arguments:
|
||||
# Message to log
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
error() {
|
||||
log "${RED}ERROR${RESET} ==> ${*}"
|
||||
}
|
||||
########################
|
||||
# Print the welcome page
|
||||
# Globals:
|
||||
# DISABLE_WELCOME_MESSAGE
|
||||
# BITNAMI_APP_NAME
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
print_welcome_page() {
|
||||
if [[ -z "${DISABLE_WELCOME_MESSAGE:-}" ]]; then
|
||||
if [[ -n "$BITNAMI_APP_NAME" ]]; then
|
||||
print_image_welcome_page
|
||||
fi
|
||||
fi
|
||||
}
|
||||
########################
|
||||
# Print the welcome page for a Bitnami Docker image
|
||||
# Globals:
|
||||
# BITNAMI_APP_NAME
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
print_image_welcome_page() {
|
||||
local github_url="https://github.com/bitnami/bitnami-docker-${BITNAMI_APP_NAME}"
|
||||
|
||||
log ""
|
||||
log "${BOLD}Welcome to the Bitnami ${BITNAMI_APP_NAME} container${RESET}"
|
||||
log "Subscribe to project updates by watching ${BOLD}${github_url}${RESET}"
|
||||
log "Submit issues and feature requests at ${BOLD}${github_url}/issues${RESET}"
|
||||
log "Send us your feedback at ${BOLD}containers@bitnami.com${RESET}"
|
||||
log ""
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
. /opt/bitnami/base/functions
|
||||
|
||||
########################
|
||||
# Helper function to initialize a single nami module
|
||||
# Arguments:
|
||||
# Module to initialize
|
||||
# Returns:
|
||||
# None
|
||||
# Description:
|
||||
# Initialize an unpacked nami module with the `nami initialize` command.
|
||||
# Command arguments can be specified as function argumnts after the module name.
|
||||
# `--log-level trace` flag is added to the command if `NAMI_DEBUG` env variable exists.
|
||||
# The log level can be overriden using the `NAMI_LOG_LEVEL` env variable.
|
||||
#########################
|
||||
nami_initialize_one() {
|
||||
local module="${1:?module not specified}"
|
||||
if nami inspect $module | grep -q '"lifecycle": "unpacked"'; then
|
||||
local inputs=
|
||||
if [[ -f "/${module}-inputs.json" ]]; then
|
||||
inputs="--inputs-file=/${module}-inputs.json"
|
||||
fi
|
||||
nami ${NAMI_DEBUG:+--log-level ${NAMI_LOG_LEVEL:-trace}} initialize $module $inputs "${@:2}"
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Helper function to initialize one or more nami modules
|
||||
# Arguments:
|
||||
# Module to initialize
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
nami_initialize() {
|
||||
local module="${1:?module not specified}"
|
||||
for module in "${@}"; do
|
||||
nami_initialize_one $module
|
||||
done
|
||||
}
|
||||
|
|
@ -1,211 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
. /opt/bitnami/base/functions
|
||||
|
||||
print_usage() {
|
||||
log "Usage: bitnami-pkg <COMMAND> <PACKAGE>-<VERSION> [OPTIONS] -- [ARGS]"
|
||||
log ""
|
||||
log "Download and install Bitnami packages"
|
||||
log ""
|
||||
log "Commands:"
|
||||
log " install Download and install a package."
|
||||
log " unpack Download and unpack a package."
|
||||
log ""
|
||||
log "Options:"
|
||||
log " -b, --bucket Package release bucket (default: stacksmith)."
|
||||
log " -c, --checksum SHA256 verification checksum."
|
||||
log " -h, --help Show this help message and exit."
|
||||
log ""
|
||||
log "If the package is already available in the /tmp/bitnami/pkg/cache/"
|
||||
log "directory, the download will be skipped. If there is a corresponding"
|
||||
log "file of the same name post-fixed with .sha256 in the directory,"
|
||||
log "that sha will be used instead of the --checksum option."
|
||||
log ""
|
||||
log "Examples:"
|
||||
log " - Unpack package"
|
||||
log " \$ bitnami-pkg unpack nginx-1.9.10-0"
|
||||
log ""
|
||||
log " - Verify and Install package"
|
||||
log " \$ bitnami-pkg install nginx-1.9.10-0 --checksum 15565d06b18c2e3710fc08e579ddb3d0e39aa663264a0f7404f0743cb4cdb58d"
|
||||
log ""
|
||||
log " - Install package with arguments"
|
||||
log " \$ bitnami-pkg install mariadb-10.1.11-0 -- --password bitnami"
|
||||
log ""
|
||||
log " - Install package from testing"
|
||||
log " \$ bitnami-pkg install mariadb-10.1.11-0 --bucket testing"
|
||||
log ""
|
||||
}
|
||||
|
||||
identify_distro() {
|
||||
distro="${IMAGE_OS:-unknown}"
|
||||
if [ "${distro}" == "unknown" -a -f /etc/os-release ]; then
|
||||
distro="$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | cut -d'"' -f2)-$(grep "^VERSION_ID=" /etc/os-release | cut -d'=' -f2 | cut -d'"' -f2 | cut -d'.' -f1)"
|
||||
fi
|
||||
echo "$distro"
|
||||
}
|
||||
|
||||
identify_arch() {
|
||||
local arch=$(uname -m)
|
||||
|
||||
case "${arch}" in
|
||||
ppc64le)
|
||||
;; # no-op
|
||||
x86_64)
|
||||
case $(identify_distro) in
|
||||
debian-*)
|
||||
arch=amd64
|
||||
;;
|
||||
ol-*)
|
||||
arch=x86_64
|
||||
;;
|
||||
centos-*)
|
||||
arch=x86_64
|
||||
;;
|
||||
rhel-*)
|
||||
arch=x86_64
|
||||
;;
|
||||
photon-*)
|
||||
arch=x86_64
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
arch="unknown"
|
||||
;;
|
||||
esac
|
||||
echo $arch
|
||||
}
|
||||
|
||||
# break up command line for easy parsing and check legal options
|
||||
ARGS=$(getopt -o b:c:h -l "bucket:,checksum:,help" -n "bitnami-pkg" -- "$@")
|
||||
if [ $? -ne 0 ];
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval set -- "$ARGS";
|
||||
while true; do
|
||||
case "$1" in
|
||||
-b|--bucket)
|
||||
shift
|
||||
if [ -n "$1" ]; then
|
||||
RELEASE_BUCKET=$1
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
-c|--checksum)
|
||||
shift
|
||||
if [ -n "$1" ]; then
|
||||
PACKAGE_SHA256=$1
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# weed out unrecognized commands
|
||||
case "$1" in
|
||||
install|unpack) ;;
|
||||
*)
|
||||
error "Unrecognized command: $1"
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# install/unpack command need to be supplied a package name
|
||||
if [ $# -lt 2 ]; then
|
||||
print_usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INSTALL_ROOT=/tmp/bitnami/pkg/install
|
||||
CACHE_ROOT=/tmp/bitnami/pkg/cache
|
||||
|
||||
PACKAGE="$2-linux-$(identify_arch)-$(identify_distro)"
|
||||
PACKAGE_ARGS=${@:3}
|
||||
PACKAGE_NAME=$(echo $PACKAGE | sed 's/-[0-9].*//')
|
||||
RELEASE_BUCKET=${RELEASE_BUCKET:-stacksmith}
|
||||
|
||||
mkdir -p $INSTALL_ROOT
|
||||
cd $INSTALL_ROOT
|
||||
|
||||
info "Downloading $PACKAGE package"
|
||||
if [ -f $CACHE_ROOT/$PACKAGE.tar.gz ]; then
|
||||
info "$CACHE_ROOT/$PACKAGE.tar.gz already exists, skipping download."
|
||||
cp $CACHE_ROOT/$PACKAGE.tar.gz .
|
||||
if [ -f $CACHE_ROOT/$PACKAGE.tar.gz.sha256 ]; then
|
||||
info "Using the local sha256 from $CACHE_ROOT/$PACKAGE.tar.gz.sha256"
|
||||
PACKAGE_SHA256=$(cat $CACHE_ROOT/$PACKAGE.tar.gz.sha256)
|
||||
fi
|
||||
else
|
||||
# display cURL progress bar when a tty is attached
|
||||
if tty -s; then
|
||||
CURL_ARGS="-#"
|
||||
else
|
||||
CURL_ARGS="-sS"
|
||||
fi
|
||||
if ! curl $CURL_ARGS -LOf "https://downloads.bitnami.com/files/$RELEASE_BUCKET/$PACKAGE.tar.gz"; then
|
||||
warn "Package name '$PACKAGE' does not exist, will try '${PACKAGE%-$(identify_distro)}'..."
|
||||
if curl $CURL_ARGS -LOf "https://downloads.bitnami.com/files/$RELEASE_BUCKET/${PACKAGE%-$(identify_distro)}.tar.gz"; then
|
||||
PACKAGE="${PACKAGE%-$(identify_distro)}"
|
||||
else
|
||||
error "Could not find the requested package..."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! tar tzf $PACKAGE.tar.gz >/dev/null 2>&1; then
|
||||
error "Invalid or corrupt '$PACKAGE' package."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$PACKAGE_SHA256" ]; then
|
||||
info "Verifying package integrity"
|
||||
echo "$PACKAGE_SHA256 $PACKAGE.tar.gz" | sha256sum -c -
|
||||
fi
|
||||
|
||||
# If the tarball has too many files, it can trigger a bug
|
||||
# in overlayfs when using tar. Install bsdtar in the container image
|
||||
# to workaround it. As the overhead is too big (~40 MB), it is not added by
|
||||
# default. Source: https://github.com/coreos/bugs/issues/1095
|
||||
if which bsdtar > /dev/null; then
|
||||
bsdtar -xf $PACKAGE.tar.gz
|
||||
else
|
||||
tar xzf $PACKAGE.tar.gz
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
install) info "Installing $PACKAGE" ;;
|
||||
unpack) info "Unpacking $PACKAGE" ;;
|
||||
esac
|
||||
nami $1 $PACKAGE $PACKAGE_ARGS
|
||||
|
||||
rm -rf $INSTALL_ROOT
|
||||
|
||||
if [ "$BITNAMI_PKG_EXTRA_DIRS" ]; then
|
||||
info "Creating extra directories"
|
||||
for i in ${BITNAMI_PKG_EXTRA_DIRS}; do
|
||||
mkdir -p $i
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$BITNAMI_PKG_CHMOD" ]; then
|
||||
DIRS="/.nami /bitnami $BITNAMI_PKG_EXTRA_DIRS"
|
||||
if ! [[ $PACKAGE_NAME =~ .*-client ]]; then
|
||||
mkdir -p /bitnami/$PACKAGE_NAME
|
||||
fi
|
||||
# We need to be in $HOME in order to nami inspect works
|
||||
cd $HOME
|
||||
DIRS+=" $(nami inspect $PACKAGE_NAME | grep -e 'installdir' | cut -f4 -d\")"
|
||||
info "Fixing permissions: chmod $BITNAMI_PKG_CHMOD $DIRS"
|
||||
chmod $BITNAMI_PKG_CHMOD $DIRS
|
||||
fi
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
# set -o xtrace
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
# Load libraries
|
||||
. /opt/bitnami/base/functions
|
||||
|
||||
# Constants
|
||||
INIT_SEM=/tmp/initialized.sem
|
||||
|
||||
# Functions
|
||||
|
||||
########################
|
||||
# Ensure gems are up to date
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# Boolean
|
||||
#########################
|
||||
gems_up_to_date() {
|
||||
bundle check 1> /dev/null
|
||||
}
|
||||
|
||||
########################
|
||||
# Wait for database to be ready
|
||||
# Globals:
|
||||
# DATABASE_HOST
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
wait_for_db() {
|
||||
local db_host="${DATABASE_HOST:-mariadb}"
|
||||
local db_address
|
||||
db_address="$(getent hosts "$db_host" | awk '{ print $1 }')"
|
||||
counter=0
|
||||
log "Connecting to MariaDB at $db_address"
|
||||
while ! nc -z "$db_host" 3306; do
|
||||
counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
log "Error: Couldn't connect to MariaDB."
|
||||
exit 1
|
||||
fi
|
||||
log "Trying to connect to mariadb at $db_address. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
print_welcome_page
|
||||
|
||||
if [[ "$1" = "bundle" ]] && [[ "$2" = "exec" ]]; then
|
||||
if [[ -f /app/config.ru ]]; then
|
||||
log "Rails project found. Skipping creation..."
|
||||
else
|
||||
log "Creating new Rails project..."
|
||||
rails new . --skip-bundle --database mysql
|
||||
# Add mini_racer
|
||||
sed -i -e "s/# gem 'mini_racer'/gem 'mini_racer'/" Gemfile
|
||||
# TODO: substitution using 'yq' once they support anchors
|
||||
# Related issue: https://github.com/mikefarah/yq/issues/178
|
||||
# E.g: yq w -i /app/config/database.yml default.host '<%= ENV.fetch("DATABASE_HOST") { mariadb } %>'
|
||||
# E.g: yq w -i /app/config/database.yml development.database '<%= ENV.fetch("DATABASE_NAME") { mariadb } %>'
|
||||
log "Setting default host to \`${DATABASE_HOST:-mariadb}\`..."
|
||||
sed -i -e 's/host:.*$/host: <%= ENV.fetch("DATABASE_HOST", "mariadb") %>/g' /app/config/database.yml
|
||||
log "Setting development database to \`${DATABASE_NAME:-my_app_development}\`..."
|
||||
sed -i -e '1,/test:/ s/database:.*$/database: <%= ENV.fetch("DATABASE_NAME", "my_app_development") %>/g' /app/config/database.yml
|
||||
fi
|
||||
|
||||
if ! gems_up_to_date; then
|
||||
log "Installing/Updating Rails dependencies (gems)..."
|
||||
bundle install
|
||||
log "Gems updated!!"
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_WAIT ]]; then
|
||||
wait_for_db
|
||||
fi
|
||||
|
||||
if [[ -f $INIT_SEM ]]; then
|
||||
echo "#########################################################################"
|
||||
echo " "
|
||||
echo " App initialization skipped:"
|
||||
echo " Delete the file $INIT_SEM and restart the container to reinitialize"
|
||||
echo " You can alternatively run specific commands using docker-compose exec"
|
||||
echo " e.g docker-compose exec rails bundle exec rails db:migrate"
|
||||
echo " "
|
||||
echo "#########################################################################"
|
||||
else
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Configuring the database..."
|
||||
while ! bundle exec rails db:create; do
|
||||
counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
log "Error: db:create failed"
|
||||
exit 1
|
||||
fi
|
||||
log "Trying to execute db:create. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
fi
|
||||
log "Initialization finished!!!"
|
||||
touch $INIT_SEM
|
||||
fi
|
||||
|
||||
if [[ -z $SKIP_DB_SETUP ]]; then
|
||||
log "Applying database migrations (db:migrate)..."
|
||||
while ! bundle exec rails db:migrate; do
|
||||
counter=$((counter+1))
|
||||
if [ $counter == 30 ]; then
|
||||
log "Error: db:migrate failed"
|
||||
exit 1
|
||||
fi
|
||||
log "Trying to execute db:migrate. Attempt $counter."
|
||||
sleep 5
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
exec tini -- "$@"
|
||||
Loading…
Reference in New Issue