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;
+ }
+}