47 lines
1.3 KiB
Docker
47 lines
1.3 KiB
Docker
FROM swift:6.2-noble
|
|
|
|
# Make sure all system packages are up to date, and install only essential packages.
|
|
RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
|
|
&& apt-get -q update \
|
|
&& apt-get -q dist-upgrade -y \
|
|
&& apt-get -q install -y \
|
|
libjemalloc2 \
|
|
ca-certificates \
|
|
tzdata \
|
|
# If your app or its dependencies import FoundationNetworking, also install `libcurl4`.
|
|
libcurl4 \
|
|
# If your app or its dependencies import FoundationXML, also install `libxml2`.
|
|
# libxml2 \
|
|
sqlite3 \
|
|
nodejs \
|
|
npm \
|
|
build-essential \
|
|
curl \
|
|
&& rm -r /var/lib/apt/lists/*
|
|
|
|
# Set up a build area
|
|
WORKDIR /app
|
|
|
|
# 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 \
|
|
$([ -f ./Package.resolved ] && echo "--force-resolved-versions" || true)
|
|
|
|
# Copy entire repo into container
|
|
COPY . .
|
|
|
|
RUN curl -L https://github.com/watchexec/watchexec/releases/download/v2.3.2/watchexec-2.3.2-aarch64-unknown-linux-gnu.tar.xz --output watchexec.tar.xz \
|
|
&& tar -xvf watchexec.tar.xz \
|
|
&& cp ./watchexec-2.3.2-aarch64-unknown-linux-gnu/watchexec /bin
|
|
|
|
RUN npm install -g browser-sync
|
|
|
|
ENV SWIFT_BACKTRACE=enable=no
|
|
ENV LOG_LEVEL=debug
|
|
|
|
CMD ["swift", "test"]
|
|
|