Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers VPS plans with one-click Coolify, NVMe storage and a 14-day free trial.
To deploy a Dockerfile application on Coolify, create an Application in the target project and environment, connect its source (usually a Git repository), select Dockerfile as the build strategy, set the correct build context and Dockerfile path, expose the container’s listening port, add the domain and runtime configuration, then deploy. Your process must listen on 0.0.0.0, not only 127.0.0.1, or Coolify’s proxy cannot reach it.
Coolify builds the image from your Dockerfile and applies environment variables, networking, storage, domains, and health-check settings when it creates the container. The sections below show the complete dashboard workflow, explain the settings that most often cause failures, and provide a verification and recovery plan.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →What Coolify does with a Dockerfile application
Coolify coordinates the deployment rather than replacing Docker. It queues a deployment, checks out your source or reads the Dockerfile configuration, builds or pulls an image, creates a container with the settings you supplied, and routes configured domains to healthy HTTP containers through its proxy.
Dockerfiles are useful when you need exact control over the base image, installed packages, copied files, build stages, runtime user, and default container command. Coolify can run on your own server or through Coolify Cloud; in either case, the workload runs on a server you provide.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
The Dockerfile determines how the image is built. Coolify’s application settings determine how that image runs: environment variables, internal ports, domains, mounts, networks, health checks, and resource limits. Keeping those two responsibilities separate makes troubleshooting much easier.
Choose the right source and build path
Coolify supports several application sources. For a Dockerfile deployment, choose the path that matches where your files live and how you want to update them.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute| Path | When to use it | Important limitation or advantage |
|---|---|---|
| Git repository with Dockerfile | Your application source and Dockerfile are versioned together. | Supports normal Git workflows, webhooks, branches, and repeatable builds. The Base Directory and Dockerfile Location must match the repository layout. |
| Dockerfile entered directly in Coolify without Git | You need a minimal image that does not copy application files from a repository. | There is no repository build context. COPY and ADD cannot pull files from a Git checkout that does not exist. |
| Existing Docker image | An image is already built by another pipeline or registry. | Coolify runs the image and applies runtime settings; it does not build the image from your Dockerfile. |
| Git-based Docker Compose definition | Your service requires multiple coordinated containers. | Use Compose when the application is a multi-service stack rather than a single Dockerfile application. |
For most teams, a Git-backed Dockerfile is the best default because the source, Dockerfile, and configuration changes can be reviewed and redeployed consistently. Use the no-Git option only when the image can be built entirely from the Dockerfile and declared package sources.
Prepare the Dockerfile and repository
Make the build context intentional
Docker can read files for COPY and ADD only from the selected build context. In Coolify, the Base Directory is the directory sent to Docker as that context. A Dockerfile in a monorepo may therefore need a Base Directory such as /apps/api, while a root-level Dockerfile normally uses the repository root.
The Dockerfile path is interpreted relative to the Base Directory. For example, if the repository contains services/api/docker/Dockerfile and the build context should be services/api, set Base Directory to /services/api and Dockerfile Location to docker/Dockerfile. Do not include the repository path twice.
Define a deterministic runtime
Use a pinned or deliberately selected base image, install only the packages required at runtime, copy the built artifact into the final stage, and set an explicit default command. A multi-stage build keeps compilers and development dependencies out of the running image.
Recommended Free Tools
# Example structure; adapt commands to your application
FROM node:22-bookworm AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-bookworm-slim
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/package*.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/server.js"]
EXPOSE documents the port used inside the image; it does not publish a host port. You still enter that internal port in Coolify’s Ports Exposes setting.
Bind the server to all container interfaces
Configure the application to listen on 0.0.0.0 and the intended internal port. Binding to 127.0.0.1 makes the process reachable only from inside its own container, so the Coolify proxy reports a gateway or connection failure even though the process appears to be running.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
For local validation, run the image with a temporary host mapping and test the same internal port:
docker build -t my-app:test .
docker run --rm -p 8080:3000 my-app:test
Then open http://localhost:8080. The host port 8080 in this local command is only for testing; in Coolify, configure the container port 3000 for proxy routing.
Free tools Windows power users keep installed
One-click scans. No signup required.
Keep secrets out of image layers
Do not put production passwords, API keys, private certificates, or tokens in Dockerfile ENV instructions, copied files, or build arguments that become visible in image history. Image layers can remain available after a later line attempts to remove a secret. Store runtime secrets in Coolify’s environment settings. If a secret is genuinely needed during a build, use Docker BuildKit secrets where available so it is not written into the resulting layer.
Deploy through the Coolify dashboard
1. Select the project and environment
- Open the target Coolify project.
- Select the environment in which the application should run.
- Create a new Application.
Keep production and non-production applications in separate environments when their variables, domains, or storage must not be mixed.
2. Choose the source
Select a public repository, configure a deploy key for a private repository, or connect a supported Git App. Choose the repository and branch that contain the Dockerfile and application source. If no repository files are required, choose the Dockerfile-without-Git path instead.
3. Select Dockerfile as the build strategy
During creation, the setting may be labeled Build pack. Select Dockerfile. In current Coolify terminology, the same choice appears after creation under General > Build pipeline > Build strategy.
Do not select a language-specific build pack if your Dockerfile is meant to control the complete build. Otherwise, Coolify may run a different build process from the one your image expects.
4. Set Base Directory and Dockerfile Location
- Set Base Directory to the directory that should be the Docker build context.
- Set Dockerfile Location to the Dockerfile path relative to that directory.
- Check every
COPYandADDinstruction against that context. A path outside the context will fail, even if the file exists elsewhere in the repository.
If the Dockerfile is at the repository root, the common configuration is the repository root as Base Directory and Dockerfile as Dockerfile Location. For a monorepo, use the smallest directory that contains all files required by the build, while remembering that files above that directory cannot be copied.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
5. Configure the internal port
In the application settings, set Ports Exposes to the port on which the process listens inside the container, such as 3000. This is the port Coolify’s proxy uses for routing. It is not a host port and should not be written as a host-to-container pair such as 8080:3000.
If the application listens on more than one internal port, expose the HTTP port used by the public domain and configure any additional service according to its protocol and access requirements. A port value alone cannot fix an application that listens on a different port or on the loopback interface.
6. Add the public domain
Enter the domain or subdomain that should route to the application. Ensure DNS points to the server running the Coolify proxy and that the application is intended to serve HTTP traffic through that proxy. The domain will work only after the container is healthy and the process is reachable on the configured internal port.
7. Add runtime variables
Enter variables required when the container starts, such as database connection details, application mode, session secrets, or external service endpoints. Distinguish these from values needed only while building the image.
- Runtime variables: define them in the application’s environment settings. They are injected when Coolify creates the container.
- Build arguments: manage them under Advanced > Build when the Dockerfile needs a non-secret value during
docker build. - Build secrets: use Docker BuildKit secret support for sensitive values consumed during a build, when available.
After changing variables, deploy or restart as appropriate. Saving a value in the interface does not necessarily replace the already-running container immediately.
8. Configure persistent storage
Add a volume or bind mount for data that must survive replacement of the container, such as uploaded files or a local database directory. Match the mount path to the path the application actually writes to. A mount hides any files that were present at that path in the image, so initialize it deliberately.
A volume or bind mount protects data from normal container replacement, but it is not a backup against deletion, disk failure, corruption, or loss of the server. Configure independent backups and test restoration for important data.
9. Add a health check when the application can report readiness
You can define a Docker HEALTHCHECK in the image or configure a Coolify health check. A useful HTTP example is:
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3
CMD curl --fail http://localhost:3000/health || exit 1
The command must exist in the image. If you use curl in the health check, install it in the runtime stage; a minimal image that lacks the command will remain unhealthy even when the application itself works. Make the endpoint represent readiness rather than a page that depends on a slow or optional downstream service.
10. Deploy and read the build log
- Choose Deploy.
- Watch the build stages and confirm the intended Dockerfile is being used.
- After the image is built, inspect startup logs for configuration errors, migrations, and the listening address.
- Check the health status and test the configured domain.
A successful image build does not prove that the application started correctly. Treat build output, application logs, health status, and domain routing as separate checks.
How ports and proxy routing work
Internal port versus host mapping
Coolify’s normal domain path routes the proxy to the application’s internal container port. Enter that internal value in Ports Exposes. Publishing a host port directly on the server is a different mechanism and can bypass the normal domain-based proxy path.
Host mappings can also interfere with rolling replacement: two containers cannot bind the same host port at the same time. If a deployment replaces an old container with a new one, a fixed host-port binding may prevent the new container from starting. Prefer internal-port routing unless you have a specific reason to publish a host port.
Why a running container can still be unreachable
- The process listens on
127.0.0.1instead of0.0.0.0. - Ports Exposes contains the wrong internal port.
- The application has crashed after the container started.
- A health check command is missing from the image or points to the wrong path.
- The domain points to a different server or the proxy has not received the intended configuration.
- A startup migration or required environment variable prevents the service from becoming ready.
Test from inside the container or through the application logs before changing DNS. This separates an application listener problem from a proxy or domain problem.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Redeployments, changes, and replacement behavior
Coolify applies runtime configuration when it creates containers. Saving a setting does not always alter a running container. Changes to environment variables, storage, health checks, ports, networks, and resource limits generally require a deploy or restart. Dockerfile and source changes require a deployment that builds a new image or reuses an image according to the configured pipeline.
For Git-backed applications, a webhook or another deployment trigger can start the process after a commit. Without automation, deploy manually after changes. Before redeploying, confirm that the new image still contains required migration tools, health-check commands, and application assets.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.CLI deployment alternative
The official CLI workflow is useful when deployments belong in scripts or a CI system. Before using it, establish a verified CLI context and token, identify the project and server UUIDs, select the target environment, and have the Git repository, branch, build pack, and exposed port ready.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
The workflow follows the same lifecycle as the dashboard:
- Create the application with the project, server, environment, repository, branch, Dockerfile build strategy, and exposed internal port.
- Configure required variables and other application settings.
- Trigger deployment by application UUID or name.
- List deployments and retrieve deployment details.
- Inspect application logs and verify health and routing.
Use the CLI for repeatability, but do not omit the dashboard-level checks. A scripted deployment can succeed while the process is bound to the wrong interface or the domain points to the wrong server.
Verification checklist after deployment
- The build log completes and shows the expected Dockerfile stages.
- The final image contains the command used by any Docker health check.
- The process is listening on the configured internal port and on
0.0.0.0. - Required runtime variables are present, and no production secret is embedded in image layers.
- The health check succeeds, if one is configured.
- Application logs show the expected startup behavior rather than a crash loop.
- The configured domain reaches the healthy container through the Coolify proxy.
- Any volume or bind mount is attached at the path the application uses.
- Important persistent data is backed up independently and a restore procedure has been tested.
Troubleshooting common failures
“COPY failed” or a missing file during build
Check Base Directory first. Docker can access only files inside the selected build context. Move the context higher, move the required file into the context, or change the Dockerfile path. Do not attempt to reference a parent directory with a path such as ../config; Docker excludes it from the context.
The build uses the wrong Dockerfile
Confirm that Build strategy is Dockerfile, then verify Dockerfile Location relative to Base Directory. In a monorepo, a correct filename with an incorrect context can still select the wrong files or fail at a later COPY step.
The container starts but the domain returns a gateway error
Read the application startup log and confirm the listener address and port. Change the server binding to 0.0.0.0, set Ports Exposes to the actual internal port, and redeploy. If the container is healthy but the domain still fails, verify DNS and the proxy’s domain configuration.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The container is marked unhealthy
Run the health-check command manually inside the image. Confirm that its executable is installed, the URL and port are correct, and the endpoint is available after the application’s startup period. Increase the start period only when the application genuinely needs more initialization time; do not hide a persistent startup failure with a long delay.
Environment changes have no effect
Variables are applied when the container is created. Deploy or restart after changing them, then inspect the effective startup configuration without printing secret values. If the value is needed during image creation rather than runtime, configure it as a build argument or BuildKit secret instead.
Data disappeared after a deployment
Check whether the data directory was mounted. Files written only to the container’s writable layer are lost when that container is replaced. Add a volume or bind mount, confirm ownership and permissions, and establish an independent backup and restoration process.
A replacement deployment cannot start because a port is already in use
Look for a host port mapping that binds the same server port as the existing container. Remove the mapping and use Coolify’s internal-port routing, or arrange a replacement strategy that does not require both containers to bind the same host port simultaneously.
Choosing between Git and a no-Git Dockerfile
| Decision question | Git-backed application | Dockerfile without Git |
|---|---|---|
| Does the build need source files, assets, or package manifests? | Yes; repository files are available within the selected build context. | No; the Dockerfile must build without copying repository files. |
| Do you need branch history, pull requests, or webhook deployments? | Yes; Git is the natural fit. | No; deployments are manually managed unless another process supplies an image. |
| Will several people maintain the Dockerfile? | Version control provides review and rollback. | Direct editing in Coolify is simpler but provides less source-history context. |
| Is the image already produced elsewhere? | Either path can be replaced by deploying the existing image. | Use an existing image path instead of maintaining a second build. |
The deciding factor is the build context: if the Dockerfile needs application files, use a Git-backed application and set the context correctly. If it does not, a direct Dockerfile can be adequate for a small, self-contained image.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

