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

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Gregor Riepl 2019-11-20 11:19:19 +01:00 committed by Rohit Yadav
parent 7ea78b9e35
commit c131e6fcf0
4 changed files with 117 additions and 0 deletions

41
ui/Dockerfile Normal file
View File

@ -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/

View File

@ -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

31
ui/build.sh Executable file
View File

@ -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} .

30
ui/nginx/default.conf Normal file
View File

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