QoddiDocumentation
Browse documentation

QODDI DOCUMENTATION

How to deploy a Docker app

Last updated

Qoddi uses container technology to deploy any app that works with Docker.

To get started with Docker, choose a Docker App from the Marketplace. After the Docker instance is launched, you can deploy your container using several different methods outlined below.

All docker-related settings must be set from the app settings page, docker composer, docker run and direct access to the docker engine are not permitted on Qoddi.

When you create an app on Qoddi, you have several options to deploy your app :

Specify a public registry image

You can deploy an app directly from the registry by adding an image name from Docker hub or another source. This image will still be audited and copied to Qoddi’s private registry before being deployed to your app: this step is mandatory to scan the image for viruses and security threats and make it available to the Qoddi’s cluster which is not directly connected to public registries :

Example

nginx:latest

Upload a Dockerfile

A Dockerfile selects its own runtime; language buildpack defaults do not apply. The following example is for a plain JavaScript server with a committed npm lockfile and no asset compilation step:

FROM node:24-bookworm-slim
WORKDIR /app
ENV NODE_ENV=production
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY . .
ENV PORT=3000
EXPOSE 3000
USER node
CMD ["node", "server.js"]

Include node_modules, .git, and local secret files such as .env in .dockerignore. Replace server.js with the real entry point and have it listen on 0.0.0.0 and PORT. Configure Qoddi’s container port to match. Applications that compile TypeScript or assets need a build stage with their development tools.

Ship application files in the image. A virtual disk mounted over the application directory would hide those files. Rebuild regularly for base-image updates; pin an image digest when an exact base is required. See Docker’s Node.js guide.

Using Github/Gitlabs or Git

A Dockerfile must be present at the root directory of your app.

Check this page for complete Git deployment tutorial.

Notes

Important: build time is limited to 60 minutes, make sure the build time for your image is under 60 minutes. There is no limitation on the number of builds you can create or deploy, all builds are hosted inside Qoddi’s private registry and not available from outside Qoddi.

Qoddi also includes a Marketplace that is optimized to launch apps in a few easy steps. Our Marketplace includes several datastores (like MySQL), WordPress, and other useful services or microservices.

When using a Docker Image, Make sure you meet all the requirements on the Dockerhub page for the app you want to deploy. For instance, add mandatory environment variables, use the appropriate port to expose your container, and add the required disks. The Qoddi “settings” page replaces a docker-compose file.

Some functions are not available on Qoddi, for instance it’s not possible to link an external port directly to your container. No matter which port you select to expose your container, Qoddi will always forward this port to the web-facing port of your instance (80). Specific applications ports that are not linkable to the :80 port (like 22, 3306 etc…) cannot be used to reach a Qoddi’s instance from the outside world.