Practical tools for system, network, security, and operations administrators.

CLD-C0071 · Containers & Docker

Dockerfile Best Practices

Review one Dockerfile before you build it. Do not bake in a secret, and do not build during the reading.

Updated 25 October 2026 · Checklist

This is an original planning guide. It is not a vendor manual, an official standard, or legal advice. Example addresses use documentation ranges. Review every command before you paste it.

What this hour is for

Dockerfile Best Practices drafts an ignore file, a healthcheck, and a size note. Read the user the file runs as. Do not copy a secret into the image. Do not build or push during the reading.

Write the account, project, or repository you administer, the name of this change, and the time. A second change waits until this line has been read back.

The browser tool drafts text or reads a paste you already hold. It does not log in, it does not scan, and it does not apply.

192.0.2.10/24, gateway 192.0.2.1, 198.51.100.0/24, 203.0.113.0/24, and 2001:db8::/32 are documentation. example.com is a documentation name. A sample password is replaced.

The change you can finish

Apply nothing while you are writing the note. When the lab window opens, it is one change on the account named in the ticket. Read the draft, then the account, then decide.

Rollback is the previous file, the previous plan, or the lab resource you can delete because it was only a lab.

  1. Write the app you build.
  2. Read the Dockerfile draft.
  3. Remove any secret.
  4. Read the user and the healthcheck.
  5. Do not build.
  6. Stop.

Mistakes that outlive the statement

Dockerfile Best Practices goes wrong in a small set of ways. The list is here so the ticket can forbid them before the window.

Decisions to write down

One decision for Dockerfile Best Practices: The app is yours. No secret is in the file. Nothing is built. Nothing is pushed. And the ignore file was read.

Checks before you call it done

Confirm this before you call the change done: The app is written. The file was read. No secret is in the note. Nothing was built. And nothing was pushed. If one of those fails, stop.

# Dockerfile review.
# Do not bake in a secret. Do not build during the reading.

Before you leave the account

Dockerfile Best Practices ends when the account in the note is the account in the ticket. If it is not, stop.

The draft stays a draft until a person has read the names in it. A generator does not log in, does not apply, and does not scan.

192.0.2.10/24, gateway 192.0.2.1, 198.51.100.0/24, 203.0.113.0/24, and 2001:db8::/32 are documentation. example.com is a documentation name. A sample password is replaced. It is not a password you keep. 10.0.0.0/16 is a sample prefix, not a network you publish unless you already use it.

prompt-for-this is a reminder that a secret is missing. It is not an access key, a token, or a password you save. An Azure secret draft may contain a sample password. Replace it. Do not file it.

One change is the window. If two things move and the result is wrong, you will not know which one did it.

If the same step fails twice, stop for the day. Restore the copy you took first.

A second person reads the account and the change aloud. If they cannot find them in the ticket, the note is not done.

This page is a planning guide. It is not a vendor manual, not an official standard, not legal advice, and not an audit opinion. You do not apply it against an account you do not administer.

Tools for this guide

These tools run in the browser on this site. They do not log into your machines.

More in this cluster

The pillar for this page, and the next published pages filed with it.