sveltekit-dockerfiles
sveltekit-dockerfiles copied to clipboard
Different Dockerfiles for different sveltekit adapters
SvelteKit Dockerfiles
The following are dockerfiles that could be used to build sveltekit apps images using different adapters.
Table of Contents
- Using Node/Auto Adapter
- Using Bun Adapter
- Using Static Adapter (and nginx)
Using Node/Auto Adapter
- Create a Dockerfile with the following content:
FROM node:alpine
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["node", "build"]
EXPOSE 3000
-
Build the Docker image:
docker build -t sveltekit-node ./adapter-node.Dockerfile
-
Run the Docker container:
docker run -p 3000:3000 sveltekit-node
App should now be accessible athttp://localhost:3000
.
Using Bun Adapter
- Create a Dockerfile with the following content:
FROM oven/bun
WORKDIR /app
COPY package.json package.json
RUN bun install
COPY . .
RUN bun run build
EXPOSE 3000
ENTRYPOINT ["bun", "./build"]
-
Build the Docker image:
docker build -t sveltekit-bun ./adapter-bun.Dockerfile
-
Run the Docker container:
docker run -p 3000:3000 sveltekit-bun
App should now be accessible athttp://localhost:3000
.
Using Static Adapter (and nginx)
Since static adapter outputs static html/js files/assets, we can use nginx
to serve the project. The project is first built using node
image, and then uses nginx
image to serve the built files... giving a much smaller image size.
- Create a Dockerfile with the following content:
FROM node:alpine as build
ADD . /app
WORKDIR /app
RUN npm install
RUN npm run build
FROM nginx:stable
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/build /usr/share/nginx/html
- Create an
nginx.conf
file in the same directory as theDockerfile
with the following content:
server {
listen 80;
listen [::]:80;
server_name _;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/index.html $uri.html /index.html;
}
include mime.types;
types {
application/javascript js mjs;
}
}
- Build the Docker image:
docker build -t sveltekit-static ./adapter-static.Dockerfile
The image exposes port 80, so to run it on port 3000 locally:
docker run -p 3000:80 sveltekit-static
App should now be accessible at http://localhost:3000
.
Different projects may require different dependencies and dockerization techniques, the above is one of the ways you can achieve this.
Please feel very welcome to contribute/correct/update/enhance.