alnoda-workspaces/workspaces/postgres-workspace/Dockerfile
2022-05-23 16:13:15 +00:00

205 lines
10 KiB
Docker

ARG docker_registry=docker.io/alnoda
ARG image_tag=2.2
## Images used:
ARG BUILD_IMAGE=node:12.18.3
ARG DEPLOY_IMAGE=${docker_registry}/base-workspace:${image_tag}
ARG MKDOCS_COPY_IMAGE=${docker_registry}/ide-workspace:${image_tag}
################################################################################ BUILD
ARG THEIA_VERSION=1.15.0
FROM ${BUILD_IMAGE} as theia-builder
ARG THEIA_VERSION
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y apt-utils \
&& apt-get install -y git \
&& apt-get install -y libsecret-1-dev \
&& mkdir /opt/theia
WORKDIR /opt/theia
ADD ${THEIA_VERSION}.package.json ./package.json
ARG GITHUB_TOKEN
RUN yarn --pure-lockfile && \
NODE_OPTIONS="--max_old_space_size=8192" yarn theia build && \
yarn theia download:plugins && \
yarn --production && \
yarn autoclean --init && \
echo *.ts >> .yarnclean && \
echo *.ts.map >> .yarnclean && \
echo *.spec.* >> .yarnclean && \
yarn autoclean --force && \
yarn cache clean
################################################################################ IMAGE
FROM ${MKDOCS_COPY_IMAGE} as docs_image
FROM dimitri/pgloader:ccl.latest as pgloader-builder
FROM ${DEPLOY_IMAGE}
USER root
RUN apt-get update \
&& mkdir -p -m 777 /opt/theia \
&& cd /opt/theia && nodeenv --node=12.18.3 env && . env/bin/activate \
&& mkdir -p -m 777 /home/project \
&& apt-get install -y libsecret-1-dev
COPY --from=theia-builder /opt/theia /opt/theia
COPY settings.json /home/abc/.theia/settings.json
COPY supervisord-postgres.conf /etc/supervisord/
COPY --from=docs_image /home/docs/ /home/docs/
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
COPY schemaspy/schemaspy.sh /opt/schemaspy/schemaspy.sh
ENV SHELL=/bin/bash \
THEIA_DEFAULT_PLUGINS=local-dir:/opt/theia/plugins \
USE_LOCAL_GIT=true \
HOME=/home/abc \
PATH="/home/abc/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/14/bin" \
NVM_DIR=/home/abc/.nvm \
PGDATA="/var/postgres"
COPY --from=pgloader-builder /usr/local/bin/pgloader /usr/bin/pgloader
RUN echo "------------------------------------------------------ postgres" \
&& sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' \
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - \
&& apt-get update \
&& apt-get -y install postgresql-12 \
&& apt-get -y install postgresql-13 \
&& apt-get -y install postgresql-14 \
&& ln -s /usr/lib/postgresql/14/bin/pg_dump /usr/bin/pg_dump_14 \
&& ln -s /usr/lib/postgresql/14/bin/pg_dumpall /usr/bin/pg_dumpall_14 \
&& ln -s /usr/lib/postgresql/14/bin/pg_restore /usr/bin/pg_restore_14 \
&& ln -s /usr/lib/postgresql/14/bin/psql /usr/bin/psql_14 \
&& ln -s /usr/lib/postgresql/13/bin/pg_dump /usr/bin/pg_dump_13 \
&& ln -s /usr/lib/postgresql/13/bin/pg_dumpall /usr/bin/pg_dumpall_13 \
&& ln -s /usr/lib/postgresql/13/bin/pg_restore /usr/bin/pg_restore_13 \
&& ln -s /usr/lib/postgresql/13/bin/psql /usr/bin/psql_13 \
&& ln -s /usr/lib/postgresql/12/bin/pg_dump /usr/bin/pg_dump_12 \
&& ln -s /usr/lib/postgresql/12/bin/pg_dumpall /usr/bin/pg_dumpall_12 \
&& ln -s /usr/lib/postgresql/12/bin/pg_restore /usr/bin/pg_restore_12 \
&& ln -s /usr/lib/postgresql/12/bin/psql /usr/bin/psql_12 \
&& echo "------------------------------------------------------ java" \
&& apt-get -y update \
&& apt-get install -y openjdk-8-jre \
&& echo "------------------------------------------------------ python" \
&& apt-get install -y libpq-dev python-dev python3-dev python3.8-dev \
&& pip install psycopg2==2.9.3 \
&& pip install pgcli==3.3.1 \
&& echo "------------------------------------------------------ nodejs" \
&& apt-get -y install curl dirmngr apt-transport-https lsb-release ca-certificates \
&& curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - \
&& apt-get install -y nodejs \
&& echo "------------------------------------------------------ rclone" \
&& curl https://rclone.org/install.sh | bash \
&& echo "------------------------------------------------------ pspg" \
&& apt-get install -y pspg \
&& echo "------------------------------------------------------ pgmetrics" \
&& cd /tmp && wget https://github.com/rapidloop/pgmetrics/releases/download/v1.12.0/pgmetrics_1.12.0_linux_amd64.tar.gz \
&& tar -xzf /tmp/pgmetrics_1.12.0_linux_amd64.tar.gz \
&& chmod +x /tmp/pgmetrics_1.12.0_linux_amd64/pgmetrics \
&& mv /tmp/pgmetrics_1.12.0_linux_amd64/pgmetrics /usr/bin/pgmetrics \
&& rm /tmp/pgmetrics_1.12.0_linux_amd64.tar.gz \
&& rm -rf /tmp/pgmetrics_1.12.0_linux_amd64 \
&& echo "------------------------------------------------------ pg_sample" \
&& git clone https://github.com/mla/pg_sample.git /opt/pg_sample \
&& ln -s /opt/pg_sample/pg_sample /usr/bin/pg_sample \
&& echo "------------------------------------------------------ pgcenter" \
&& cd /tmp && wget https://github.com/lesovsky/pgcenter/releases/download/v0.9.2/pgcenter_0.9.2_linux_amd64.deb \
&& apt-get install -y /tmp/pgcenter_0.9.2_linux_amd64.deb \
&& rm /tmp/pgcenter_0.9.2_linux_amd64.deb \
&& echo "------------------------------------------------------ pgclimb" \
&& cd /tmp && wget -O pgclimb https://github.com/lukasmartinelli/pgclimb/releases/download/v0.3/pgclimb_linux_amd64 \
&& chmod +x /tmp/pgclimb \
&& mv /tmp/pgclimb /usr/bin/pgclimb \
&& echo "------------------------------------------------------ pgfutter" \
&& cd /tmp && wget https://github.com/lukasmartinelli/pgfutter/releases/download/v1.2/pgfutter_linux_386 \
&& chmod +x /tmp/pgfutter_linux_386 \
&& mv /tmp/pgfutter_linux_386 /usr/bin/pgfutter \
&& echo "------------------------------------------------------ sqitch" \
&& apt-get install -y sqitch libdbd-pg-perl libdbd-sqlite3-perl sqlite3 \
&& echo "------------------------------------------------------ yuniql" \
&& curl https://github.com/rdagumampan/yuniql/releases/download/v1.1.55/yuniql-cli-linux-x64-latest.tar.gz -L -o /tmp/yuniql.tar.gz \
&& tar -xvzf /tmp/yuniql.tar.gz -C /bin \
&& rm /tmp/yuniql.tar.gz \
&& echo "------------------------------------------------------ migra" \
&& pip install migra==3.0.1621480950 \
# && echo "------------------------------------------------------ pgsh" \
# && npm i -g yarn@latest \
# && yarn global add pgsh \
&& echo "------------------------------------------------------ yandex-pgmigrate" \
&& pip install yandex-pgmigrate==1.0.6 \
&& echo "------------------------------------------------------ synth" \
&& curl -sSL https://getsynth.com/install | sh \
&& echo "------------------------------------------------------ mock-data" \
&& curl https://github.com/faisaltheparttimecoder/mock-data/releases/download/v3.0/mock-linux-amd64-v3.0 -L -o /tmp/mock \
&& chmod +x /tmp/mock \
&& mv /tmp/mock /usr/bin/mock \
&& echo "------------------------------------------------------ pev-2" \
&& cd /tmp && wget https://github.com/dalibo/pev2/releases/download/v0.24.0/pev2.tar.gz \
&& tar -xzf /tmp/pev2.tar.gz \
&& mkdir /opt/pev2 && mv pev2 /opt/pev2 \
&& rm /tmp/pev2.tar.gz \
&& cd /opt/pev2 && nodeenv --node=12.18.3 env && . env/bin/activate && npm install -g http-server \
&& echo "------------------------------------------------------ pgflame" \
&& cd /tmp && wget https://github.com/mgartner/pg_flame/releases/download/v1.2/pg_flame_1.2_Linux_i386.tar.gz \
&& tar -xzf /tmp/pg_flame_1.2_Linux_i386.tar.gz \
&& chmod +x /tmp/pg_flame \
&& mv /tmp/pg_flame /usr/bin/pg_flame \
&& rm /tmp/pg_flame_1.2_Linux_i386.tar.gz \
&& echo "------------------------------------------------------ schemaspy" \
&& cd /tmp && wget https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar \
&& mv /tmp/schemaspy-6.1.0.jar /opt/schemaspy/schemaspy.jar \
&& cd /opt/schemaspy && wget https://jdbc.postgresql.org/download/postgresql-42.3.1.jar \
&& apt-get install -y graphviz \
&& chmod +x /opt/schemaspy/schemaspy.sh \
&& ln -s /opt/schemaspy/schemaspy.sh /usr/bin/schemaspy \
&& echo "------------------------------------------------------ tbls" \
&& cd /tmp && wget https://github.com/k1LoW/tbls/releases/download/v1.54.2/tbls_v1.54.2_linux_amd64.tar.gz \
&& mkdir /tmp/tbls && tar -xzf /tmp/tbls_v1.54.2_linux_amd64.tar.gz --directory /tmp/tbls \
&& chmod +x /tmp/tbls/tbls \
&& mv /tmp/tbls/tbls /usr/bin/ \
&& rm -rf /tmp/tbls && rm tbls_v1.54.2_linux_amd64.tar.gz \
&& echo "------------------------------------------------------ dbdesigner" \
&& git clone https://github.com/akreienbring/dbdesigner /opt/dbdesigner \
&& cd /opt/dbdesigner && nodeenv --node=12.18.3 env && . env/bin/activate && npm install --save express \
&& rm /opt/dbdesigner/dist/startUp.js \
&& echo "------------------------------------------------------ erd-go" \
&& cd /tmp && wget https://github.com/kaishuu0123/erd-go/releases/download/v2.0.0/linux_amd64_erd-go \
&& chmod +x /tmp/linux_amd64_erd-go \
&& mv /tmp/linux_amd64_erd-go /usr/bin/erd-go \
&& cd /tmp && wget https://github.com/kaishuu0123/erd-go/releases/download/v2.0.0/linux_amd64_erd-go \
&& echo "------------------------------------------------------ sqlfluff" \
&& pip install sqlfluff==0.9.4 \
&& echo "------------------------------------------------------ user" \
&& mkdir /var/log/postgres && chown -R abc /var/log/postgres \
&& chown -R abc /var/log/postgresql \
&& mkdir /var/postgres && chown -R abc /var/postgres \
&& chmod 777 /var/run/postgresql \
&& chown -R abc /opt/dbdesigner \
&& chown -R abc /opt/pev2 \
&& mkdir /var/log/dbdesigner && chown -R abc /var/log/dbdesigner \
&& chown -R abc /opt/schemaspy \
&& chown -R abc /opt/pg_sample \
&& echo "export PAGER='pspg -s 4 --interactive --no-mouse'" >> ~/.zshrc \
&& chown -R abc /opt/theia \
&& mkdir -p /var/log/theia && chown -R abc /var/log/theia \
&& chown -R abc /home/docs \
&& chown -R abc /home/abc/utils \
&& chown -R abc /home/abc/installed-python-packages \
&& find /home -type d | xargs -I{} chown -R abc {} \
&& find /home -type f | xargs -I{} chown abc {}
COPY dbdesigner/startUp.js /opt/dbdesigner/dist/startUp.js
USER abc