Bird
Raised Fist0
Svelteframework~20 mins

Docker deployment in Svelte - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Docker Deployment Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What will be the output when running this Dockerized Svelte app?

Consider a simple Svelte app served by a Docker container. The Dockerfile uses node:18-alpine as base and runs npm run build then npm run preview. The app has a button that increments a counter displayed on screen.

What happens when you open the app in a browser and click the button 3 times?

Svelte
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "run", "preview"]
AThe app fails to load because the Dockerfile misses exposing port 3000.
BThe counter increments from 0 to 3 on button clicks, showing updated count each time.
CThe app shows the counter but button clicks do not update the count due to missing hot reload.
DThe app crashes on start because node_modules is not copied into the container.
Attempts:
2 left
💡 Hint

Think about what npm run preview does and how Svelte apps behave after build.

📝 Syntax
intermediate
2:00remaining
Which Dockerfile snippet correctly sets up a Svelte app for production?

Choose the Dockerfile snippet that correctly installs dependencies, builds the app, and runs it in production mode.

A
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "run", "preview"]
B
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "start"]
C
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
CMD npm run preview
D
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
CMD npm run preview
Attempts:
2 left
💡 Hint

Look for correct CMD syntax and proper copying order.

🔧 Debug
advanced
2:00remaining
Why does this Dockerized Svelte app fail to start?

The Dockerfile below builds a Svelte app but the container exits immediately after starting. What is the cause?

Svelte
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD npm run preview
AThe CMD instruction is missing JSON array syntax, causing the container to exit immediately.
BThe app crashes because the build output folder is not copied.
CThe container exits because the port is not exposed in the Dockerfile.
DThe app fails because <code>npm run preview</code> is not installed in node_modules.
Attempts:
2 left
💡 Hint

Check how CMD is written and how Docker interprets it.

❓ lifecycle
advanced
2:00remaining
What happens if you change source code after building the Docker image?

You build a Docker image for a Svelte app and run it. Then you change the source code locally but do not rebuild the image. What will the running container show?

AThe container shows a blank page because source and build files mismatch.
BThe container automatically updates to show the new source code changes.
CThe container crashes because source files changed but image is not rebuilt.
DThe container shows the old version of the app as it uses the built files inside the image.
Attempts:
2 left
💡 Hint

Think about how Docker images and containers isolate files.

🧠 Conceptual
expert
2:00remaining
Which statement best explains why multi-stage builds are used in Docker for Svelte apps?

Multi-stage builds are common in Dockerfiles for Svelte apps. Why is this approach used?

ATo allow running multiple Svelte apps in one container efficiently.
BTo enable hot module replacement inside the container during development.
CTo separate the build environment from the runtime environment, reducing final image size and attack surface.
DTo cache node_modules separately for faster rebuilds.
Attempts:
2 left
💡 Hint

Consider what files are needed to run the app versus build it.

Practice

(1/5)
1. What is the main purpose of using Docker for deploying a Svelte app?
easy
A. To automatically fix bugs in the app
B. To package the app so it runs the same on any machine
C. To make the app load faster in the browser
D. To write the app code faster

Solution

  1. Step 1: Understand Docker's role

    Docker creates a container that holds your app and all its parts, so it works the same everywhere.
  2. Step 2: Compare options

    Only To package the app so it runs the same on any machine describes this packaging and consistency purpose. Others talk about coding speed, browser speed, or bug fixing, which Docker does not do.
  3. Final Answer:

    To package the app so it runs the same on any machine -> Option B
  4. Quick Check:

    Docker ensures consistent app environment = D [OK]
Hint: Docker packages apps for consistent environments [OK]
Common Mistakes:
  • Thinking Docker speeds up coding
  • Confusing Docker with browser performance tools
  • Assuming Docker fixes app bugs automatically
2. Which line correctly exposes port 3000 in a Dockerfile for a Svelte app?
easy
A. EXPOSE 3000
B. EXPOSE:3000
C. EXPOSE = 3000
D. EXPOSE_PORT 3000

Solution

  1. Step 1: Recall Dockerfile syntax for ports

    The correct syntax to expose a port is simply 'EXPOSE' followed by the port number without symbols.
  2. Step 2: Check each option

    Only 'EXPOSE 3000' matches the correct syntax. Others have invalid characters or wrong commands.
  3. Final Answer:

    EXPOSE 3000 -> Option A
  4. Quick Check:

    Correct Dockerfile port syntax = B [OK]
Hint: Use 'EXPOSE' followed by port number without symbols [OK]
Common Mistakes:
  • Adding colons or equals signs after EXPOSE
  • Using wrong command names like EXPOSE_PORT
  • Forgetting to expose the port at all
3. Given this Dockerfile snippet for a Svelte app:
FROM node:18-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "preview"]

What happens when you run this container?
medium
A. The app builds and runs on port 3000 serving the preview
B. The app fails because 'npm run preview' is invalid
C. The container exposes port 80 instead of 3000
D. The app runs but does not build before starting

Solution

  1. Step 1: Analyze Dockerfile commands

    The Dockerfile installs dependencies, copies files, builds the app, exposes port 3000, and runs 'npm run preview' which serves the built app.
  2. Step 2: Understand container behavior

    Since 'npm run preview' is the correct command to serve a Svelte build, the app will run on port 3000 as exposed.
  3. Final Answer:

    The app builds and runs on port 3000 serving the preview -> Option A
  4. Quick Check:

    Build then preview on port 3000 = A [OK]
Hint: Check build then preview commands and exposed port [OK]
Common Mistakes:
  • Assuming 'npm run preview' is invalid
  • Confusing exposed port 3000 with 80
  • Thinking build step is missing
4. You wrote this Dockerfile for your Svelte app but the container fails to start:
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build
EXPOSE 3000
CMD npm run preview

What is the likely error?
medium
A. npm install should come after build
B. EXPOSE 3000 is missing
C. CMD should be an array, not a string
D. WORKDIR is not set

Solution

  1. Step 1: Check CMD syntax in Dockerfile

    CMD should be an array of strings like ["npm", "run", "preview"] to run correctly in Docker.
  2. Step 2: Verify other parts

    EXPOSE 3000 is present, npm install is before build which is correct, and WORKDIR is set. So these are not errors.
  3. Final Answer:

    CMD should be an array, not a string -> Option C
  4. Quick Check:

    Use array syntax for CMD = A [OK]
Hint: Use array syntax for CMD in Dockerfile [OK]
Common Mistakes:
  • Writing CMD as a plain string
  • Changing order of npm install and build incorrectly
  • Forgetting to set WORKDIR
5. You want to deploy a Svelte app with Docker but need to serve it on port 8080 instead of 3000. Which change in the Dockerfile is correct?
FROM node:18-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "preview"]
hard
A. Change CMD to ["npm", "run", "preview", "--port", "8080"] only
B. Only change EXPOSE 3000 to EXPOSE 8080
C. No changes needed; Docker maps ports automatically
D. Change EXPOSE 3000 to EXPOSE 8080 and run preview with PORT=8080

Solution

  1. Step 1: Understand port exposure and app config

    Changing EXPOSE alone only tells Docker which port to open, but the app must also listen on that port.
  2. Step 2: Set app to listen on port 8080

    You must pass the PORT environment variable or argument so 'npm run preview' serves on port 8080.
  3. Step 3: Combine both changes

    Change EXPOSE to 8080 and run preview with PORT=8080 ensures Docker and app ports match.
  4. Final Answer:

    Change EXPOSE 3000 to EXPOSE 8080 and run preview with PORT=8080 -> Option D
  5. Quick Check:

    Match exposed port and app port = C [OK]
Hint: Match Docker EXPOSE and app port settings [OK]
Common Mistakes:
  • Changing only EXPOSE without app port
  • Changing only CMD without exposing port
  • Assuming Docker auto-maps ports
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard