This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack-primate.git


The following commit(s) were added to refs/heads/master by this push:
     new ef1f652  docker: add container build files and instructions (#22)
ef1f652 is described below

commit ef1f652d984ddb563461f805c3fd692fefdf16b7
Author: Gregor Riepl <[email protected]>
AuthorDate: Wed Nov 20 11:19:19 2019 +0100

    docker: add container build files and instructions (#22)
    
    This adds:
    - a Dockerfile
    - a build script that injects some labels from git
    - an example nginx config for running the built webpack
    - instructions on how to run the container
---
 Dockerfile         | 41 +++++++++++++++++++++++++++++++++++++++++
 README.md          | 15 +++++++++++++++
 build.sh           | 31 +++++++++++++++++++++++++++++++
 nginx/default.conf | 30 ++++++++++++++++++++++++++++++
 4 files changed, 117 insertions(+)

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..ef4a646
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,41 @@
+# 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.
+
+FROM node:10-buster AS build
+
+WORKDIR /build
+
+RUN apt-get -y update && \
+       apt-get -y upgrade
+
+COPY . /build/
+RUN    npm install
+RUN npm run build
+
+FROM nginx:alpine AS runtime
+
+LABEL org.opencontainers.image.title="CloudStack Primate" \
+       org.opencontainers.image.description="A modern role-based progressive 
CloudStack UI" \
+       org.opencontainers.image.authors="Apache CloudStack Contributors" \
+       
org.opencontainers.image.url="https://github.com/apache/cloudstack-primate"; \
+       
org.opencontainers.image.documentation="https://github.com/apache/cloudstack-primate/README.md";
 \
+       
org.opencontainers.image.source="https://github.com/apache/cloudstack-primate"; \
+       org.opencontainers.image.vendor="The Apache Software Foundation" \
+       org.opencontainers.image.licenses="Apache-2.0" \
+       org.opencontainers.image.ref.name="latest"
+
+COPY --from=build /build/dist/. /usr/share/nginx/html/
diff --git a/README.md b/README.md
index d6e9e3e..d688fe6 100644
--- a/README.md
+++ b/README.md
@@ -88,6 +88,21 @@ server {
 }
 ```
 
+### Docker
+
+A production-ready Docker container can also be built with the provided
+Dockerfile and build script.
+
+Make sure Docker is installed, then run build.sh:
+
+    ./build.sh
+
+Change the example configuration in `nginx/default.conf` according to your 
needs.
+
+Run Primate:
+
+    docker run -ti --rm -p 8080:80 -v $(pwd)/nginx:/etc/nginx/conf.d:ro 
cloudstack-primate:latest
+
 ## Documentation
 
 ### Learning Resources
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..059d374
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# 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.
+
+set -e
+set -x
+
+GIT_TAG="$(git tag --points-at | head -n 1)"
+if [ -n "${GIT_REV}" ]; then
+       LABEL_GIT_TAG="--label \"org.opencontainers.image.version=${GIT_TAG}\""
+fi
+DATE="$(date --iso-8601=seconds)"
+LABEL_DATE="--label \"org.opencontainers.image.created=${DATE}\""
+GIT_REV="$(git rev-parse HEAD)"
+LABEL_GIT_REV="--label \"org.opencontainers.image.revision=${GIT_REV}\""
+
+docker build -t cloudstack-primate ${LABEL_DATE} ${LABEL_GIT_REV} 
${LABEL_GIT_TAG} .
diff --git a/nginx/default.conf b/nginx/default.conf
new file mode 100644
index 0000000..9ba96cf
--- /dev/null
+++ b/nginx/default.conf
@@ -0,0 +1,30 @@
+# 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.
+
+server {
+    listen       80;
+    server_name  localhost;
+    location / {
+        root   /usr/share/nginx/html;
+        index  index.html;
+    }
+    location /client/ {
+        # http://127.0.0.1:8080 should be replaced your CloudStack management
+        # Server's actual URI
+        proxy_pass   http://127.0.0.1:8080;
+    }
+}

Reply via email to