Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dockerize ova-webserver #2263

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions installer/build/build-cache.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ warrow="\033[0;00;97m=>\033[0m"
barrow="\033[0;00;94m=>\033[0m"
yarrow="\033[0;00;93m=>\033[0m"

buildimages=(
"vmware/fileserver:${BUILD_OVA_REVISION},fileserver/Dockerfile,."
)

# cache docker images
images=(
vmware/admiral:vic_${BUILD_ADMIRAL_REVISION}
Expand Down Expand Up @@ -95,6 +99,26 @@ function cacheOther() {
timecho "${warrow} saved all downloads"
}

function buildImages() {
timecho "${warrow} building container images"
mkdir -p ${CACHE}/docker/
for params in "${buildimages[@]}"; do
img=$(echo "${params}" | awk -F',' '{print $1}')
docker_file=$(echo "${params}" | awk -F',' '{print $2}')
context=$(echo "${params}" | awk -F',' '{print $3}')
timecho "${barrow} building ${brprpl}${img}${reset}"
docker build --no-cache -t ${img} -f ${docker_file} ${context}

archive="${CACHE}/docker/$(echo "${img##*/}" | tr ':' '-').tar.gz"
timecho "${yarrow} saving ${brprpl}${archive##*/}${reset}"
docker save "$img" | gzip > "$archive"

timecho "${warrow} ${img} details \n$(docker images --digests -f "dangling=false" --format "tag: {{.Tag}}, digest: {{.Digest}}, age: {{.CreatedSince}}" $(echo ${img} | cut -d ':' -f1))\n"
done

timecho "${warrow} built all images"
}

function usage() {
timecho "Usage: $0 -c cache-directory" 1>&2
exit 1
Expand Down Expand Up @@ -124,3 +148,4 @@ fi

cacheImages
cacheOther
buildImages
5 changes: 0 additions & 5 deletions installer/build/ova-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,6 @@
"source": "scripts/fileserver/configure_fileserver.sh",
"destination": "/etc/vmware/fileserver/configure_fileserver.sh"
},
{
"type": "file",
"source": "scripts/fileserver/start_fileserver.sh",
"destination": "/etc/vmware/fileserver/start_fileserver.sh"
},
{
"type": "file",
"source": "scripts/verify.py",
Expand Down
3 changes: 1 addition & 2 deletions installer/build/scripts/fileserver/configure_fileserver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,5 @@
# limitations under the License.
set -uf -o pipefail

mkdir -p "/opt/vmware/fileserver/ca_download"

iptables -w -A INPUT -j ACCEPT -p tcp --dport "${FILESERVER_PORT}"
echo "Finished fileserver config"
3 changes: 2 additions & 1 deletion installer/build/scripts/fileserver/fileserver.service
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ RestartSec=15
EnvironmentFile=/etc/vmware/environment
ExecStartPre=-/usr/bin/systemctl stop landing_server.service
ExecStartPre=/usr/bin/bash /etc/vmware/fileserver/configure_fileserver.sh
ExecStart=/etc/vmware/fileserver/start_fileserver.sh
ExecStart=/usr/bin/docker run --cap-drop ALL --cap-add NET_BIND_SERVICE --rm --name fileserver -v /opt/vmware/fileserver:/opt/vmware/fileserver -v /storage/data/certs:/certs:ro -p 80:80 -p ${FILESERVER_PORT}:9443 vmware/fileserver:ova
ExecStop=/usr/bin/docker stop fileserver

[Install]
WantedBy=vic-appliance.target
23 changes: 0 additions & 23 deletions installer/build/scripts/fileserver/start_fileserver.sh

This file was deleted.

10 changes: 10 additions & 0 deletions installer/build/scripts/systemd/scripts/load-docker-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ if [[ ! -f /etc/vmware/firstboot ]]; then
echo "admiral=${ADMIRAL_IMAGE} ${ADMIRAL_IMAGE_ID}" >> /storage/data/version
echo "admiral=${ADMIRAL_IMAGE} ${ADMIRAL_IMAGE_ID}" >> /etc/vmware/version

echo "Loading file server"
# tag fileserver as :ova
FILESERVER_IMAGE="vmware/fileserver:${BUILD_OVA_REVISION}"
docker tag "$FILESERVER_IMAGE" vmware/fileserver:ova
FILESERVER_IMAGE_ID=$(docker images vmware/fileserver:ova -q)

# Write version files
echo "fileserver=${FILESERVER_IMAGE} ${FILESERVER_IMAGE_ID}" >> /storage/data/version
echo "fileserver=${FILESERVER_IMAGE} ${FILESERVER_IMAGE_ID}" >> /etc/vmware/version

echo "Loading vic-machine-server"
# tag vic-machine-server as :ova
VIC_MACHINE_SERVER_IMAGE="gcr.io/eminent-nation-87317/vic-machine-server:${BUILD_VIC_MACHINE_SERVER_REVISION}"
Expand Down
35 changes: 35 additions & 0 deletions installer/fileserver/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Building:
# from installer directory
# make ova-webserver
# docker build --no-cache -t vmware/fileserver:ova -f fileserver/Dockerfile .

FROM photon:2.0

RUN set -eux; \
tdnf distro-sync --refresh -y; \
tdnf install shadow -y; \
tdnf info installed; \
tdnf clean all

# Default location for TLS - Specify `-v /host/cert/path:/certs` to use defaults
# Override by providing a volume and values for `-e TLS_CERTIFICATE` and `-e TLS_PRIVATE_KEY`
ENV TLS_CERTIFICATE=/certs/server.crt
ENV TLS_PRIVATE_KEY=/certs/server.key
ENV PORT 80
ENV TLS_PORT 9443

EXPOSE $PORT
EXPOSE $TLS_PORT

COPY bin/ova-webserver /usr/local/bin/

RUN setcap cap_net_bind_service=+ep /usr/local/bin/ova-webserver

# Create a VIC user to run the application.
RUN groupadd -g 10000 vic && \
useradd -u 10000 -g vic -s /sbin/nologin -c "VIC user" vic

# Change to the VIC user.
USER vic

ENTRYPOINT /usr/local/bin/ova-webserver --addr ":${TLS_PORT}" --cert "${TLS_CERTIFICATE}" --key "${TLS_PRIVATE_KEY}"