mirror of
				https://github.com/fspc/etherpad-and-draw-node-alpine.git
				synced 2025-10-30 16:15:34 -04:00 
			
		
		
		
	Dockerfied alpine + etherpad + etherdraw = ready for takeoff!
This commit is contained in:
		
							parent
							
								
									dda435d6c3
								
							
						
					
					
						commit
						72e6656811
					
				
							
								
								
									
										72
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,72 @@ | ||||
| version: '2.1' | ||||
| 
 | ||||
| # etherpad and etherdraw  | ||||
| # currently 1.6.2  | ||||
| # settings.json | ||||
| # https://github.com/ether/etherpad-lite/blob/develop/settings.json.template | ||||
| 
 | ||||
| services: | ||||
| 
 | ||||
|   etherpad: | ||||
|     build: ./etherpad  | ||||
|     image: bikebike/etherpad-node-alpine:1.6.2 | ||||
|     container_name: pad | ||||
|     ports: | ||||
|       - "9001:9001" | ||||
|     volumes: | ||||
|       - settings:/opt/etherpad-lite/var | ||||
|       - node_modules:/opt/etherpad-lite/node_modules | ||||
|     external_links: | ||||
|       - ${SQL_CONTAINTER:-mysql} | ||||
|     env_file: | ||||
|       - pad_environment | ||||
|     environment: | ||||
|       - MYSQL_ROOT_PASSWORD=${PAD_PASSWORD:-password} | ||||
|       - MYSQL_DATABASE=${PAD_DATABASE:-pad} | ||||
|       - ETHERPAD_DB_HOST=${DB_HOST:-mysql} | ||||
|       - ETHERPAD_DB_NAME=${PAD_DATABASE:-pad} | ||||
|       - ETHERPAD_DB_PASSWORD=${PAD_PASSWORD:-password} | ||||
|       - ETHERPAD_TITLE=${PAD_TITLE:-Online Flip Chart} | ||||
|       - ETHERPAD_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin_password} | ||||
|       - ETHERPAD_ADMIN_USER=${ADMIN_USER:-admin} | ||||
|       - ETHERDRAW_HOST=${DRAW_HOST:-localhost:9002} | ||||
|     network_mode: "bridge" | ||||
|     logging: | ||||
|       driver: "json-file"   | ||||
|       options: | ||||
|         max-size: "10m" | ||||
|         max-file: "3" | ||||
|     restart: always | ||||
| 
 | ||||
|   etherdraw: | ||||
|     build: ./etherdraw | ||||
|     image: bikebike/etherdraw-node-alpine:1.6.2 | ||||
|     container_name: draw | ||||
|     ports: | ||||
|       - "9002:9002" | ||||
|     volumes: | ||||
|       - draw_settings:/opt/draw/var | ||||
|     external_links: | ||||
|       - ${SQL_CONTAINTER:-mysql}  | ||||
|     env_file: | ||||
|       - draw_environment | ||||
|     environment: | ||||
|       - MYSQL_ROOT_PASSWORD=${DRAW_PASSWORD:-password} | ||||
|       - MYSQL_DATABASE=${DRAW_DATABASE:-draw} | ||||
|       - ETHERPAD_DB_HOST=${DB_HOST:-mysql} | ||||
|       - ETHERPAD_DB_NAME=${DRAW_DATABASE:-draw} | ||||
|       - ETHERPAD_DB_PASSWORD=${DRAW_PASSWORD:-password} | ||||
|       - ETHERPAD_TITLE=${DRAW_TITLE:-Ether Draw} | ||||
|       - ETHERPAD_PORT=${DRAW_PORT:-9002} | ||||
|     network_mode: "bridge" | ||||
|     logging: | ||||
|       driver: "json-file" | ||||
|       options: | ||||
|         max-size: "10m" | ||||
|         max-file: "3" | ||||
|     restart: always | ||||
| 
 | ||||
| volumes: | ||||
|   settings: | ||||
|   node_modules: | ||||
|   draw_settings: | ||||
							
								
								
									
										0
									
								
								draw_environment
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								draw_environment
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										28
									
								
								etherdraw/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								etherdraw/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| # etherdraw # | ||||
| 
 | ||||
| # node 9.2  | ||||
| FROM node:9-alpine | ||||
| MAINTAINER Jonathan Rosenbaum <fspc@freesoftwarepc.com> | ||||
| 
 | ||||
| RUN apk update; apk add bash git giflib-dev libjpeg-turbo-dev curl mysql-client python2 pkgconfig cairo-dev make g++  | ||||
| 
 | ||||
| WORKDIR /opt/ | ||||
| 
 | ||||
| RUN git clone git://github.com/JohnMcLear/draw.git  | ||||
| 
 | ||||
| ENV PYTHON=/usr/bin/python2 | ||||
| 
 | ||||
| WORKDIR draw  | ||||
| 
 | ||||
| RUN bin/installDeps.sh && rm settings.json | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| 
 | ||||
| RUN sed -i 's/^node/exec\ node/' bin/run.sh | ||||
| 
 | ||||
| VOLUME /opt/draw/var /opt/draw/node_module | ||||
| RUN ln -s var/settings.json settings.json | ||||
| 
 | ||||
| EXPOSE 9002 | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| CMD ["bin/run.sh", "--root"] | ||||
							
								
								
									
										95
									
								
								etherdraw/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										95
									
								
								etherdraw/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,95 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| : ${ETHERPAD_DB_TYPE:=mysql} | ||||
| : ${ETHERPAD_DB_HOST:=mysql} | ||||
| : ${ETHERPAD_DB_USER:=root} | ||||
| : ${ETHERPAD_DB_NAME:=etherpad} | ||||
| : ${ETHERPAD_DB_CHARSET:=utf8mb4} | ||||
| ETHERPAD_DB_NAME=$( echo $ETHERPAD_DB_NAME | sed 's/\./_/g' ) | ||||
| 
 | ||||
| # ETHERPAD_DB_PASSWORD is mandatory in mysql container, so we're not offering | ||||
| # any default. If we're linked to MySQL through legacy link, then we can try | ||||
| # using the password from the env variable MYSQL_ENV_MYSQL_ROOT_PASSWORD | ||||
| if [ "$ETHERPAD_DB_USER" = 'root' ]; then | ||||
| 	: ${ETHERPAD_DB_PASSWORD:=$MYSQL_ENV_MYSQL_ROOT_PASSWORD} | ||||
| fi | ||||
| 
 | ||||
| if [ -n "$ETHERPAD_DB_PASSWORD_FILE" ]; then | ||||
| 	: ${ETHERPAD_DB_PASSWORD:=$(cat $ETHERPAD_DB_PASSWORD_FILE)} | ||||
| fi | ||||
| 
 | ||||
| if [ -z "$ETHERPAD_DB_PASSWORD" ]; then | ||||
| 	echo >&2 'error: missing required ETHERPAD_DB_PASSWORD environment variable' | ||||
| 	echo >&2 '  Did you forget to -e ETHERPAD_DB_PASSWORD=... ?' | ||||
| 	echo >&2 | ||||
| 	echo >&2 '  (Also of interest might be ETHERPAD_DB_PASSWORD_FILE, ETHERPAD_DB_USER and ETHERPAD_DB_NAME.)' | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| : ${ETHERPAD_TITLE:=Etherpad} | ||||
| : ${ETHERPAD_PORT:=9001} | ||||
| 
 | ||||
| # Check if database already exists | ||||
| if [ "$ETHERPAD_DB_TYPE" == 'mysql' ]; then | ||||
| 	RESULT=`mysql -u${ETHERPAD_DB_USER} -p${ETHERPAD_DB_PASSWORD} \ | ||||
| 		-h${ETHERPAD_DB_HOST} --skip-column-names \ | ||||
| 		-e "SHOW DATABASES LIKE '${ETHERPAD_DB_NAME}'"` | ||||
| 
 | ||||
| 	if [ "$RESULT" != $ETHERPAD_DB_NAME ]; then | ||||
| 		# mysql database does not exist, create it | ||||
| 		echo "Creating database ${ETHERPAD_DB_NAME}" | ||||
| 
 | ||||
| 		mysql -u${ETHERPAD_DB_USER} -p${ETHERPAD_DB_PASSWORD} -h${ETHERPAD_DB_HOST} \ | ||||
| 		      -e "create database ${ETHERPAD_DB_NAME}" | ||||
| 	fi | ||||
| fi | ||||
| if [ "$ETHERPAD_DB_TYPE" == 'postgres' ]; then | ||||
| 	export PGPASSWORD=${ETHERPAD_DB_PASSWORD} | ||||
| 	if psql -U ${ETHERPAD_DB_USER} -h ${ETHERPAD_DB_HOST} postgres -lqt | cut -d \| -f 1 | grep -qw ${ETHERPAD_DB_NAME}; then | ||||
| 		true | ||||
| 	else | ||||
| 		# postgresql database does not exist, create it | ||||
| 		echo "Creating database ${ETHERPAD_DB_NAME}" | ||||
| 		psql -U ${ETHERPAD_DB_USER} -h ${ETHERPAD_DB_HOST} postgres \ | ||||
| 			-c "create database ${ETHERPAD_DB_NAME}" | ||||
| 	fi | ||||
| fi | ||||
| 
 | ||||
| if [ ! -f settings.json ]; then | ||||
| 
 | ||||
| 	cat <<- EOF > settings.json | ||||
| 	{ | ||||
| 	  "title": "${ETHERPAD_TITLE}", | ||||
| 	  "ip": "0.0.0.0", | ||||
| 	  "port" :${ETHERPAD_PORT}, | ||||
| 	  "dbType" : "${ETHERPAD_DB_TYPE}", | ||||
| 	  "dbSettings" : { | ||||
| 			    "user"    : "${ETHERPAD_DB_USER}", | ||||
| 			    "host"    : "${ETHERPAD_DB_HOST}", | ||||
| 			    "password": "${ETHERPAD_DB_PASSWORD}", | ||||
| 			    "database": "${ETHERPAD_DB_NAME}", | ||||
| 			    "charset": "${ETHERPAD_DB_CHARSET}" | ||||
| 			  } | ||||
| 	EOF | ||||
| 
 | ||||
| 	if [ $ETHERPAD_ADMIN_PASSWORD ]; then | ||||
| 
 | ||||
| 		: ${ETHERPAD_ADMIN_USER:=admin} | ||||
| 
 | ||||
| 		cat <<- EOF >> settings.json | ||||
| 		  "users": { | ||||
| 		    "${ETHERPAD_ADMIN_USER}": { | ||||
| 		      "password": "${ETHERPAD_ADMIN_PASSWORD}", | ||||
| 		      "is_admin": true | ||||
| 		    } | ||||
| 		  }, | ||||
| 		EOF | ||||
| 	fi | ||||
| 
 | ||||
| 	cat <<- EOF >> settings.json | ||||
| 	} | ||||
| 	EOF | ||||
| fi | ||||
| 
 | ||||
| exec "$@" | ||||
							
								
								
									
										38
									
								
								etherpad/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								etherpad/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | ||||
| # node 9.2  | ||||
| FROM node:9-alpine | ||||
| MAINTAINER Jonathan Rosenbaum <fspc@freesoftwarepc.com> | ||||
| 
 | ||||
| # npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade | ||||
| # npm WARN deprecated node-uuid@1.4.8: Use uuid module instead | ||||
| # npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue | ||||
| # npm WARN deprecated graceful-fs@2.0.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree. | ||||
| # npm WARN deprecated minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue | ||||
| 
 | ||||
| ENV ETHERPAD_VERSION 1.6.2 | ||||
| 
 | ||||
| RUN apk update; apk add bash curl gzip unzip mysql-client | ||||
| 
 | ||||
| WORKDIR /opt/ | ||||
| 
 | ||||
| RUN curl -SL \ | ||||
|     https://github.com/ether/etherpad-lite/archive/${ETHERPAD_VERSION}.zip \ | ||||
|     > etherpad.zip && unzip etherpad && rm etherpad.zip && \ | ||||
|     mv etherpad-lite-${ETHERPAD_VERSION} etherpad-lite | ||||
| 
 | ||||
| WORKDIR etherpad-lite | ||||
| 
 | ||||
| RUN bin/installDeps.sh && rm settings.json | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| 
 | ||||
| RUN sed -i 's/^node/exec\ node/' bin/run.sh | ||||
| 
 | ||||
| VOLUME /opt/etherpad-lite/var /opt/etherpad-lite/node_module | ||||
| RUN ln -s var/settings.json settings.json | ||||
| RUN npm install ep_adminpads ep_align ep_authornames ep_comments_page \ | ||||
|                 ep_copy_paste_images ep_define ep_draw ep_font_color ep_font_family \ | ||||
|                 ep_font_size ep_headings ep_message_all ep_offline_edit \  | ||||
|                 ep_page_view ep_print ep_simpletextsearch ep_spellcheck | ||||
| 
 | ||||
| EXPOSE 9001 | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| CMD ["bin/run.sh", "--root"] | ||||
							
								
								
									
										103
									
								
								etherpad/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										103
									
								
								etherpad/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,103 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| : ${ETHERPAD_DB_TYPE:=mysql} | ||||
| : ${ETHERPAD_DB_HOST:=mysql} | ||||
| : ${ETHERPAD_DB_USER:=root} | ||||
| : ${ETHERPAD_DB_NAME:=etherpad} | ||||
| : ${ETHERPAD_DB_CHARSET:=utf8mb4} | ||||
| ETHERPAD_DB_NAME=$( echo $ETHERPAD_DB_NAME | sed 's/\./_/g' ) | ||||
| 
 | ||||
| # ETHERPAD_DB_PASSWORD is mandatory in mysql container, so we're not offering | ||||
| # any default. If we're linked to MySQL through legacy link, then we can try | ||||
| # using the password from the env variable MYSQL_ENV_MYSQL_ROOT_PASSWORD | ||||
| if [ "$ETHERPAD_DB_USER" = 'root' ]; then | ||||
| 	: ${ETHERPAD_DB_PASSWORD:=$MYSQL_ENV_MYSQL_ROOT_PASSWORD} | ||||
| fi | ||||
| 
 | ||||
| if [ -n "$ETHERPAD_DB_PASSWORD_FILE" ]; then | ||||
| 	: ${ETHERPAD_DB_PASSWORD:=$(cat $ETHERPAD_DB_PASSWORD_FILE)} | ||||
| fi | ||||
| 
 | ||||
| if [ -z "$ETHERPAD_DB_PASSWORD" ]; then | ||||
| 	echo >&2 'error: missing required ETHERPAD_DB_PASSWORD environment variable' | ||||
| 	echo >&2 '  Did you forget to -e ETHERPAD_DB_PASSWORD=... ?' | ||||
| 	echo >&2 | ||||
| 	echo >&2 '  (Also of interest might be ETHERPAD_DB_PASSWORD_FILE, ETHERPAD_DB_USER and ETHERPAD_DB_NAME.)' | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| : ${ETHERPAD_TITLE:=Etherpad} | ||||
| : ${ETHERPAD_PORT:=9001} | ||||
| 
 | ||||
| # Check if database already exists | ||||
| if [ "$ETHERPAD_DB_TYPE" == 'mysql' ]; then | ||||
| 	RESULT=`mysql -u${ETHERPAD_DB_USER} -p${ETHERPAD_DB_PASSWORD} \ | ||||
| 		-h${ETHERPAD_DB_HOST} --skip-column-names \ | ||||
| 		-e "SHOW DATABASES LIKE '${ETHERPAD_DB_NAME}'"` | ||||
| 
 | ||||
| 	if [ "$RESULT" != $ETHERPAD_DB_NAME ]; then | ||||
| 		# mysql database does not exist, create it | ||||
| 		echo "Creating database ${ETHERPAD_DB_NAME}" | ||||
| 
 | ||||
| 		mysql -u${ETHERPAD_DB_USER} -p${ETHERPAD_DB_PASSWORD} -h${ETHERPAD_DB_HOST} \ | ||||
| 		      -e "create database ${ETHERPAD_DB_NAME}" | ||||
| 	fi | ||||
| fi | ||||
| if [ "$ETHERPAD_DB_TYPE" == 'postgres' ]; then | ||||
| 	export PGPASSWORD=${ETHERPAD_DB_PASSWORD} | ||||
| 	if psql -U ${ETHERPAD_DB_USER} -h ${ETHERPAD_DB_HOST} postgres -lqt | cut -d \| -f 1 | grep -qw ${ETHERPAD_DB_NAME}; then | ||||
| 		true | ||||
| 	else | ||||
| 		# postgresql database does not exist, create it | ||||
| 		echo "Creating database ${ETHERPAD_DB_NAME}" | ||||
| 		psql -U ${ETHERPAD_DB_USER} -h ${ETHERPAD_DB_HOST} postgres \ | ||||
| 			-c "create database ${ETHERPAD_DB_NAME}" | ||||
| 	fi | ||||
| fi | ||||
| 
 | ||||
| if [ ! -f settings.json ]; then | ||||
| 
 | ||||
| 	cat <<- EOF > settings.json | ||||
| 	{ | ||||
| 	  "title": "${ETHERPAD_TITLE}", | ||||
| 	  "ip": "0.0.0.0", | ||||
| 	  "port" :${ETHERPAD_PORT}, | ||||
| 	  "dbType" : "${ETHERPAD_DB_TYPE}", | ||||
| 	  "dbSettings" : { | ||||
| 			    "user"    : "${ETHERPAD_DB_USER}", | ||||
| 			    "host"    : "${ETHERPAD_DB_HOST}", | ||||
| 			    "password": "${ETHERPAD_DB_PASSWORD}", | ||||
| 			    "database": "${ETHERPAD_DB_NAME}", | ||||
| 			    "charset": "${ETHERPAD_DB_CHARSET}" | ||||
| 			  }, | ||||
| 	EOF | ||||
| 
 | ||||
| 	if [ $ETHERPAD_ADMIN_PASSWORD ]; then | ||||
| 
 | ||||
| 		: ${ETHERPAD_ADMIN_USER:=admin} | ||||
| 
 | ||||
| 		cat <<- EOF >> settings.json | ||||
| 		  "defaultPadText" : "", | ||||
| 		  "users": { | ||||
| 		    "${ETHERPAD_ADMIN_USER}": { | ||||
| 		      "password": "${ETHERPAD_ADMIN_PASSWORD}", | ||||
| 		      "is_admin": true | ||||
| 		    } | ||||
| 		  }, | ||||
| 		EOF | ||||
| 	fi | ||||
| 
 | ||||
| 	cat <<- EOF >> settings.json | ||||
| 	  "ep_comments_page": { | ||||
|     	    "displayCommentAsIcon": true, | ||||
|             "highlightSelectedText": true | ||||
|            }, | ||||
|   	   "ep_draw": { | ||||
|              "host": "${ETHERDRAW_HOST}" | ||||
|     	   } | ||||
| 	} | ||||
| 	EOF | ||||
| fi | ||||
| 
 | ||||
| exec "$@" | ||||
							
								
								
									
										0
									
								
								pad_environment
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								pad_environment
									
									
									
									
									
										Normal file
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user