Skip to content

Commit

Permalink
Vapor migration and cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgealegre committed Mar 1, 2022
1 parent 5fced0a commit 046ee94
Show file tree
Hide file tree
Showing 78 changed files with 546 additions and 14,118 deletions.
4 changes: 2 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
Dockerfile
Dockerfile-tools
.build/
.swiftpm/
14 changes: 7 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Packages
.build
xcuserdata
*.xcodeproj
DerivedData/
.DS_Store
/.build
/.build-ubuntu
/Packages
/config.json
/spec.json
./config/localdev-config.json
db.sqlite
.swiftpm

xcuserdata
1 change: 0 additions & 1 deletion .swift-version

This file was deleted.

5 changes: 0 additions & 5 deletions .yo-rc.json

This file was deleted.

79 changes: 59 additions & 20 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,27 +1,66 @@
FROM ibmcom/swift-ubuntu-runtime:4.1.1
LABEL maintainer="IBM Swift Engineering at IBM Cloud"
LABEL Description="Template Dockerfile that extends the ibmcom/swift-ubuntu-runtime image."
# ================================
# Build image
# ================================
FROM swift:5.5-focal as build

# We can replace this port with what the user wants
EXPOSE 8080
# Install OS updates and, if needed, sqlite3
RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
&& apt-get -q update \
&& apt-get -q dist-upgrade -y \
&& rm -rf /var/lib/apt/lists/*

# Set up a build area
WORKDIR /build

# First just resolve dependencies.
# This creates a cached layer that can be reused
# as long as your Package.swift/Package.resolved
# files do not change.
COPY ./Package.* ./
RUN swift package resolve

# Copy entire repo into container
COPY . .

# Build everything, with optimizations
RUN swift build -c release --static-swift-stdlib

# Switch to the staging area
WORKDIR /staging

# Default user if not provided
ARG bx_dev_user=root
ARG bx_dev_userid=1000
# Copy main executable to staging area
RUN cp "$(swift build --package-path /build -c release --show-bin-path)/Run" ./

# Install system level packages
# RUN apt-get update && apt-get dist-upgrade -y
# Copy any resources from the public directory and views directory if the directories exist
# Ensure that by default, neither the directory nor any of its contents are writable.
RUN [ -d /build/Public ] && { mv /build/Public ./Public && chmod -R a-w ./Public; } || true
RUN [ -d /build/Resources ] && { mv /build/Resources ./Resources && chmod -R a-w ./Resources; } || true

# Add utils files
ADD https://raw.githubusercontent.com/IBM-Swift/swift-ubuntu-docker/master/utils/run-utils.sh /swift-utils/run-utils.sh
ADD https://raw.githubusercontent.com/IBM-Swift/swift-ubuntu-docker/master/utils/common-utils.sh /swift-utils/common-utils.sh
RUN chmod -R 555 /swift-utils
# ================================
# Run image
# ================================
FROM ubuntu:focal

# Create user if not root
RUN if [ $bx_dev_user != "root" ]; then useradd -ms /bin/bash -u $bx_dev_userid $bx_dev_user; fi
# Make sure all system packages are up to date.
RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true && \
apt-get -q update && apt-get -q dist-upgrade -y && apt-get -q install -y ca-certificates && \
rm -r /var/lib/apt/lists/*

# Bundle application source & binaries
COPY . /swift-project
# Create a vapor user and group with /app as its home directory
RUN useradd --user-group --create-home --system --skel /dev/null --home-dir /app vapor

# Switch to the new home directory
WORKDIR /app

# Copy built executable and any staged resources from builder
COPY --from=build --chown=vapor:vapor /staging /app

# Ensure all further commands run as the vapor user
USER vapor:vapor

# Let Docker bind to port 8080
EXPOSE 8080

# Command to start Swift application
CMD [ "sh", "-c", "cd /swift-project && .build-ubuntu/release/UNCmorfiServer" ]
# Start the Vapor service when the image is run, default to listening on 8080 in production environment
ENTRYPOINT ["./Run"]
CMD ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"]
30 changes: 0 additions & 30 deletions Dockerfile-tools

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2018 Jorge Facundo Alegre
Copyright (c) 2022 Jorge Facundo Alegre

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading

0 comments on commit 046ee94

Please sign in to comment.