diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3e08b9af --- /dev/null +++ b/.dockerignore @@ -0,0 +1,58 @@ + +# Git repository metadata +.git +**/.gitignore + +# Object code +**/*.o +**/*.so +**/*.lo +**/*.la + +# gcov files +**/*.gcda +**/*.gcov +**/*.gcno + +# Backup files +**/*~ + +# Release files +**/*.tar.gz + +# Files currently being edited by vim or vi +**/*.swp + +# automake/autoconf +**/.deps/ +**/.dirstamp +**/.libs/ +**/Makefile +**/Makefile.in +aclocal.m4 +autom4te.cache/ +m4/* +**/!README +compile +config.guess +config.h +config.h.in +config.log +config.status +config.sub +configure +depcomp +install-sh +libtool +ltmain.sh +missing +stamp-h1 +test-driver + +# Test binaries +tests/test_* +!tests/test_*.[ch] + +# Generated docs +doc/doxygen-output + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..adbccd30 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,89 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# +# Dockerfile for guacamole-server +# + +# Start from CentOS base image +FROM centos:centos7 +MAINTAINER Michael Jumper + +# Environment variables +ENV \ + BUILD_DIR=/tmp/guacd-docker-BUILD \ + LC_ALL=en_US.UTF-8 \ + RUNTIME_DEPENDENCIES=" \ + cairo \ + dejavu-sans-mono-fonts \ + freerdp \ + freerdp-plugins \ + ghostscript \ + libjpeg-turbo \ + libssh2 \ + liberation-mono-fonts \ + libtelnet \ + libvorbis \ + libvncserver \ + libwebp \ + pango \ + pulseaudio-libs \ + terminus-fonts \ + uuid" \ + BUILD_DEPENDENCIES=" \ + autoconf \ + automake \ + cairo-devel \ + freerdp-devel \ + gcc \ + libjpeg-turbo-devel \ + libssh2-devel \ + libtool \ + libtelnet-devel \ + libvorbis-devel \ + libvncserver-devel \ + libwebp-devel \ + make \ + pango-devel \ + pulseaudio-libs-devel \ + uuid-devel" + +# Bring environment up-to-date and install guacamole-server dependencies +RUN yum -y update && \ + yum -y install epel-release && \ + yum -y install $RUNTIME_DEPENDENCIES && \ + yum clean all + +# Add configuration scripts +COPY src/guacd-docker/bin /opt/guacd/bin/ + +# Copy source to container for sake of build +COPY . "$BUILD_DIR" + +# Build guacamole-server from local source +RUN yum -y install $BUILD_DEPENDENCIES && \ + /opt/guacd/bin/build-guacd.sh "$BUILD_DIR" && \ + rm -Rf "$BUILD_DIR" && \ + yum -y autoremove $BUILD_DEPENDENCIES && \ + yum clean all + +# Start guacd, listening on port 0.0.0.0:4822 +EXPOSE 4822 +CMD [ "/usr/local/sbin/guacd", "-b", "0.0.0.0", "-f" ] + diff --git a/src/guacd-docker/.dockerignore b/src/guacd-docker/.dockerignore deleted file mode 100644 index 5792b764..00000000 --- a/src/guacd-docker/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -*~ -.git -.gitignore diff --git a/src/guacd-docker/.gitignore b/src/guacd-docker/.gitignore deleted file mode 100644 index b25c15b8..00000000 --- a/src/guacd-docker/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*~ diff --git a/src/guacd-docker/Dockerfile b/src/guacd-docker/Dockerfile deleted file mode 100644 index c0451662..00000000 --- a/src/guacd-docker/Dockerfile +++ /dev/null @@ -1,67 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# -# Dockerfile for guacamole-server -# - -# Start from CentOS base image -FROM centos:centos7 -MAINTAINER Michael Jumper - -# Environment variables -ENV \ - GUAC_VERSION=0.9.9 \ - LC_ALL=en_US.UTF-8 - -# Bring environment up-to-date, install guacamole-server build dependencies -RUN yum -y update i && \ - yum -y install epel-release && \ - yum -y install \ - cairo-devel \ - dejavu-sans-mono-fonts \ - freerdp-devel \ - freerdp-plugins \ - gcc \ - ghostscript \ - libjpeg-turbo-devel \ - libssh2-devel \ - liberation-mono-fonts \ - libtelnet-devel \ - libvorbis-devel \ - libvncserver-devel \ - libwebp-devel \ - make \ - pango-devel \ - pulseaudio-libs-devel \ - tar \ - terminus-fonts \ - uuid-devel && \ - yum clean all - -# Add configuration scripts -COPY bin /opt/guacd/bin/ - -# Download and install latest guacamole-server -RUN /opt/guacd/bin/download-guacd.sh "$GUAC_VERSION" - -# Start guacd, listening on port 0.0.0.0:4822 -EXPOSE 4822 -CMD [ "/usr/local/sbin/guacd", "-b", "0.0.0.0", "-f" ] - diff --git a/src/guacd-docker/bin/download-guacd.sh b/src/guacd-docker/bin/build-guacd.sh similarity index 64% rename from src/guacd-docker/bin/download-guacd.sh rename to src/guacd-docker/bin/build-guacd.sh index 638b276d..fe36268c 100755 --- a/src/guacd-docker/bin/download-guacd.sh +++ b/src/guacd-docker/bin/build-guacd.sh @@ -19,49 +19,37 @@ # ## -## @fn download-guacd.sh +## @fn build-guacd.sh ## -## Downloads and builds the given version of guacamole-server, automatically -## creating any required symbolic links for the proper loading of FreeRDP -## plugins. +## Builds the source of guacamole-server, automatically creating any required +## symbolic links for the proper loading of FreeRDP plugins. ## -## @param VERSION -## The version of guacamole-server to download, such as "0.9.6". +## @param BUILD_DIR +## The directory which currently contains the guacamole-server source and +## in which the build should be performed. ## -VERSION="$1" -BUILD_DIR="/tmp" +BUILD_DIR="$1" ## ## Locates the directory in which the FreeRDP libraries (.so files) are ## located, printing the result to STDOUT. ## where_is_freerdp() { - dirname `rpm -ql freerdp-devel | grep 'libfreerdp.*\.so' | head -n1` + dirname `rpm -ql freerdp-libs | grep 'libfreerdp.*\.so' | head -n1` } -# -# Download latest guacamole-server -# - -curl -L "http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-$VERSION.tar.gz" | tar -xz -C "$BUILD_DIR" - # # Build guacamole-server # -cd "$BUILD_DIR/guacamole-server-$VERSION" +cd "$BUILD_DIR" +autoreconf -fi ./configure make make install ldconfig -# -# Clean up after build -# - -rm -Rf "$BUILD_DIR/guacamole-server-$VERSION" - # # Add FreeRDP plugins to proper path #