浏览代码

:wrench: add spring dockerfile

Jeremy Zheng 1 年之前
父节点
当前提交
9eac3aa97f

+ 2 - 0
README.md

@@ -12,6 +12,8 @@ $ git clone https://github.com/iapt-platform/mint.git ~/workspace/iapt-platform/
 $ cd ~/workspace/iapt-platform/mint/
 # Load the mint-spring image
 $ podman load -i tmp/mint-spring-TIMESTAMP.tar.xz
+# Start postgresql/redis/rabbitmq... services
+$ ./docker/spring/start.sh services
 # Start a backend server
 $ ./docker/spring/start.sh backend 8080 # http://localhost:8080
 # Start a frontend server

+ 55 - 11
docker/spring/Dockerfile

@@ -5,10 +5,20 @@ ENV DEBIAN_FRONTEND noninteractive
 
 RUN apt update
 RUN apt -y upgrade
-
-RUN apt -y install wget vim locales locales-all tzdata zip unzip tree tmux \
-    build-essential
-
+RUN apt -y install locales locales-all curl wget vim tzdata pwgen zip unzip tree tmux dialog asciidoc doxygen \
+    build-essential mold \
+    php-cli php-fpm php-xml php-imap php-intl php-mbstring php-bcmath php-bz2 php-zip php-curl php-gd php-imagick php-pgsql php-mysql php-sqlite3 php-redis php-amqp \
+    postgresql postgresql-contrib rabbitmq-server redis \
+    fonts-dejavu-extra fonts-opensymbol fonts-lxgw-wenkai fonts-smiley-sans \
+    fonts-noto-extra fonts-noto-cjk-extra fonts-noto-color-emoji \
+    fonts-arphic-ukai fonts-arphic-uming  \
+    fonts-wqy-microhei fonts-wqy-zenhei \
+    fonts-cns11643-kai fonts-cns11643-sung \
+    fonts-moe-standard-kai fonts-moe-standard-song \
+    fonts-ipaexfont fonts-ipafont fonts-konatu fonts-ipafont-nonfree-jisx0208 fonts-ipafont-nonfree-uigothic \
+    fonts-mikachan \
+    fonts-tibetan-machine fonts-ddc-uchen fonts-monlam fonts-sambhota-tsugring fonts-sambhota-yigchung \
+    imagemagick ffmpeg graphviz pandoc texlive-full
 RUN apt -y autoremove
 RUN apt -y clean
 
@@ -42,7 +52,6 @@ RUN echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >>
 RUN zsh -c "source $HOME/.zshrc \
     && nvm install --lts"
 
-
 RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
 RUN locale-gen
 RUN update-locale LANG=en_US.UTF-8
@@ -50,16 +59,51 @@ RUN update-alternatives --set editor /usr/bin/vim.basic
 RUN mkdir -p $HOME/downloads
 
 # https://opensearch.org/downloads.html#opensearch
-ARG OPENSEARCH_ARCH
 ENV OPENSEARCH_VERSION "2.17.0"
 ENV OPENSEARCH_JAVA_HOME "/opt/opensearch-${OPENSEARCH_VERSION}/jdk"
 RUN wget -q -P $HOME/downloads \
     https://artifacts.opensearch.org/releases/bundle/opensearch/${OPENSEARCH_VERSION}/opensearch-${OPENSEARCH_VERSION}-linux-${OPENSEARCH_ARCH}.tar.gz
-RUN cd /opt && tar xf $HOME/downloads/opensearch-${OPENSEARCH_VERSION}-linux-${OPENSEARCH_ARCH}.tar.gz 
-RUN echo "network.host: 0.0.0.0" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml
-RUN echo "discovery.type: single-node" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml 
-RUN echo "plugins.security.disabled: true" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml
-
+RUN cd /opt && tar xf $HOME/downloads/opensearch-${OPENSEARCH_VERSION}-linux-${OPENSEARCH_ARCH}.tar.gz \
+    && mv /opt/opensearch-${OPENSEARCH_VERSION} /opt/opensearch \
+    && echo "network.host: 0.0.0.0" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml \
+    && echo "discovery.type: single-node" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml \
+    && echo "plugins.security.disabled: true" >> /opt/opensearch-${OPENSEARCH_VERSION}/config/opensearch.yml
+
+RUN wget -q -O $HOME/downloads/minio https://dl.min.io/server/minio/release/linux-amd64/minio \
+    && sudo mv $HOME/downloads/minio /usr/local/bin/minio \
+    && sudo chown root:root /usr/local/bin/minio \
+    && sudo chmod +x /usr/local/bin/minio
+RUN mkdir -p /var/lib/minio/data \
+    && chown -R nobody /var/lib/minio
+
+# https://www.rabbitmq.com/access-control.html#loopback-users
+RUN echo 'loopback_users = none' >> /etc/rabbitmq/rabbitmq.conf \
+    && sed -i "s/NODENAME.*/NODENAME=palm/g" /etc/rabbitmq/rabbitmq-env.conf \
+    && rabbitmq-plugins enable rabbitmq_mqtt \
+    && rabbitmq-plugins enable rabbitmq_management
+
+RUN su - postgres -c "/usr/bin/initdb -D /var/lib/postgres/data"
+RUN echo "listen_addresses = '0.0.0.0'" >> /var/lib/postgres/data/postgresql.conf \
+    && echo "host  all  all 0.0.0.0/0 md5" >> /var/lib/postgres/data/pg_hba.conf \
+    && mkdir /run/postgresql \
+    && chown -R postgres:postgres /run/postgresql
+
+ADD etc/redis/* /etc/redis/
+RUN mkdir -p /var/lib/redis \
+    && cd /var/lib/redis \
+    && mkdir single node-1 node-2 node-3 node-4 node-5 node-6 \
+    && chown -R redis:redis /var/lib/redis \
+    && chmod 750 /var/lib/redis
+
+RUN mkdir -p /var/www/html \
+    && echo "<?php phpinfo(); ?>" > /var/www/html/info.php \
+    && echo "daemon off;" >> /etc/nginx/nginx.conf \
+    && sed -i '35,79d' /etc/nginx/nginx.conf \
+    && sed -i '35i include sites-enabled/*.conf;' /etc/nginx/nginx.conf \
+    && sed -i "s/error_log =.*/error_log = log\/php-fpm.log/g" /etc/php/php-fpm.conf
+ADD etc/nginx/sites-enabled/localhost.conf /etc/nginx/sites-enabled/localhost.conf
+
+ADD etc/supervisor /etc/supervisor
 
 RUN echo "$(date -u +%4Y%m%d%H%M%S)" | tee /VERSION
 

+ 35 - 0
docker/spring/etc/nginx/sites-enabled/localhost.conf

@@ -0,0 +1,35 @@
+log_format custom '$remote_addr - [$time_iso8601] "$request" $status $body_bytes_sent $request_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
+types_hash_bucket_size 1024;
+
+server {
+    listen 8080;
+    server_name _;
+    index index.html index.php;
+    root /var/www/html;
+    
+    access_log /var/log/nginx/localhost.access.log custom;
+    error_log /var/log/nginx/localhost.error.log warn;
+
+    location / {
+        index index.html index.htm index.php;
+    }
+
+    location ~ \.php$ {
+        # 404
+        try_files $fastcgi_script_name =404;
+
+        # default fastcgi_params
+        include fastcgi_params;
+
+        # fastcgi settings
+        fastcgi_pass			unix:/run/php-fpm/php-fpm.sock;
+        fastcgi_index			index.php;
+        fastcgi_buffers			8 16k;
+        fastcgi_buffer_size		32k;
+
+        # fastcgi params
+        fastcgi_param DOCUMENT_ROOT	$realpath_root;
+        fastcgi_param SCRIPT_FILENAME	$realpath_root$fastcgi_script_name;
+        #fastcgi_param PHP_ADMIN_VALUE	"open_basedir=$base/:/usr/lib/php/:/tmp/";
+    }
+}

+ 8 - 0
docker/spring/etc/redis/clusters-init.sh

@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+redis-cli --cluster create 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 --cluster-replicas 1
+
+echo 'done.'
+exit 0

+ 12 - 0
docker/spring/etc/redis/node-1.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6371
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-1
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-1.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 12 - 0
docker/spring/etc/redis/node-2.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6372
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-2
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-2.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 12 - 0
docker/spring/etc/redis/node-3.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6373
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-3
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-3.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 12 - 0
docker/spring/etc/redis/node-4.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6374
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-4
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-4.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 12 - 0
docker/spring/etc/redis/node-5.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6375
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-5
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-5.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 12 - 0
docker/spring/etc/redis/node-6.conf

@@ -0,0 +1,12 @@
+bind 0.0.0.0
+port 6376
+daemonize no
+protected-mode no
+dir /var/lib/redis/node-6
+
+cluster-enabled yes
+cluster-config-file /tmp/redis-node-6.conf
+cluster-node-timeout 5000
+
+appendonly yes
+appendfsync everysec

+ 8 - 0
docker/spring/etc/redis/single.conf

@@ -0,0 +1,8 @@
+bind 0.0.0.0
+port 6379
+daemonize no
+protected-mode no
+dir /var/lib/redis/single
+
+appendonly yes
+appendfsync everysec

+ 7 - 0
docker/spring/etc/supervisor/conf.d/minio.conf

@@ -0,0 +1,7 @@
+[program:minio]
+command=/usr/local/bin/minio server data
+autostart=true
+autorestart=true
+user=nobody
+directory=/var/lib/minio
+environment=MINIO_ADDRESS="0.0.0.0:9000",MINIO_CONSOLE_ADDRESS="0.0.0.0:9001",MINIO_ROOT_USER="admin",MINIO_ROOT_PASSWORD="12345678"

+ 5 - 0
docker/spring/etc/supervisor/conf.d/mysql.conf

@@ -0,0 +1,5 @@
+[program:mysql]
+command=/usr/bin/mariadbd-safe --datadir='/var/lib/mysql' --user=mysql
+autostart=true
+autorestart=true
+user=root

+ 5 - 0
docker/spring/etc/supervisor/conf.d/nginx.conf

@@ -0,0 +1,5 @@
+[program:nginx]
+command=/usr/sbin/nginx
+autostart=true
+autorestart=true
+user=root

+ 7 - 0
docker/spring/etc/supervisor/conf.d/opensearch.conf

@@ -0,0 +1,7 @@
+[program:opensearch]
+command=/opt/opensearch/bin/opensearch
+autostart=true
+autorestart=true
+user=nobody
+directory=/opt/opensearch
+environment=OPENSEARCH_JAVA_HOME="/opt/opensearch/jdk"

+ 5 - 0
docker/spring/etc/supervisor/conf.d/php-fpm.conf

@@ -0,0 +1,5 @@
+[program:php-fpm]
+command=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf
+autostart=true
+autorestart=true
+user=root

+ 5 - 0
docker/spring/etc/supervisor/conf.d/postgresql.conf

@@ -0,0 +1,5 @@
+[program:postgresql]
+command=/usr/bin/postgres -D /var/lib/postgres/data
+autostart=true
+autorestart=true
+user=postgres

+ 5 - 0
docker/spring/etc/supervisor/conf.d/rabbitmq.conf

@@ -0,0 +1,5 @@
+[program:rabbitmq]
+command=/usr/sbin/rabbitmq-server
+autostart=true
+autorestart=true
+user=root

+ 43 - 0
docker/spring/etc/supervisor/conf.d/redis.conf

@@ -0,0 +1,43 @@
+[program:redis-single]
+command=/usr/bin/redis-server /etc/redis/node-single.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-1]
+command=/usr/bin/redis-server /etc/redis/node-1.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-2]
+command=/usr/bin/redis-server /etc/redis/node-2.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-3]
+command=/usr/bin/redis-server /etc/redis/node-3.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-4]
+command=/usr/bin/redis-server /etc/redis/node-4.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-5]
+command=/usr/bin/redis-server /etc/redis/node-5.conf
+autostart=true
+autorestart=true
+user=redis
+
+[program:redis-node-6]
+command=/usr/bin/redis-server /etc/redis/node-6.conf
+autostart=true
+autorestart=true
+user=redis
+
+

+ 14 - 0
docker/spring/etc/supervisor/supervisord.conf

@@ -0,0 +1,14 @@
+[inet_http_server]         
+port=0.0.0.0:10001     
+
+[supervisord]
+logfile=/var/log/supervisord.log                 
+pidfile=/tmp/supervisord.pid 
+loglevel=debug
+user=root
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock 
+
+[include]
+files = conf.d/*.conf