command: docker init short: Creates Docker-related starter files for your project long: |- Initialize a project with the files necessary to run the project in a container. Docker Desktop 4.18 and later provides the Docker Init plugin with the `docker init` CLI command. Run `docker init` in your project directory to be walked through the creation of the following files with sensible defaults for your project: * .dockerignore * Dockerfile * compose.yaml If any of the files already exist, a prompt appears and provides a warning as well as giving you the option to overwrite all the files. > **Warning** > > You can't recover overwritten files. > To back up an existing file before selecting to overwrite it, rename the file or copy it to another directory. {: .warning} After running `docker init`, you can choose one of the following templates: * Go: Suitable for a Go server application. * Node: Suitable for a Node server application. * Python: Suitable for a Python server application. * Rust: Suitable for a Rust server application. * Other: General purpose starting point for containerizing your application. After `docker init` has completed, you may need to modify the created files and tailor them to your project. Visit the following topics to learn more about the files: * [.dockerignore](../../../engine/reference/builder.md#dockerignore-file) * [Dockerfile](../../../engine/reference/builder.md) * [compose.yaml](../../../compose/compose-file/03-compose-file.md) usage: docker init [OPTIONS] pname: docker plink: docker.yaml options: - option: version value_type: bool default_value: "false" description: Display version of the init plugin deprecated: false hidden: false experimental: false experimentalcli: false kubernetes: false swarm: false deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false examples: |- ### Example of running `docker init` The following example shows the initial menu after running `docker init`. See the additional examples to view the options for each language or framework. ```console $ docker init Welcome to the Docker Init CLI! This utility will walk you through creating the following files with sensible defaults for your project: - .dockerignore - Dockerfile - compose.yaml Let's get started! ? What application platform does your project use? [Use arrows to move, type to filter] > Go - (detected) suitable for a Go server application Python - suitable for a Python server application Node - suitable for a Node server application Rust - suitable for a Rust server application Other - general purpose starting point for containerizing your application Don't see something you need? Let us know! Quit ``` ### Example of selecting Go The following example shows the prompts that appear after selecting `Go` and example input. ```console ? What application platform does your project use? Go ? What version of Go do you want to use? 1.20 ? What's the relative directory (with a leading .) of your main package? . ? What port does your server listen on? 3333 CREATED: .dockerignore CREATED: Dockerfile CREATED: compose.yaml ✔ Your Docker files are ready! Take a moment to review them and tailor them to your application. When you're ready, start your application by running: docker compose up --build Your application will be available at http://localhost:3333 ``` ### Example of selecting Node The following example shows the prompts that appear after selecting `Node` and example input. ```console ? What application platform does your project use? Node ? What version of Node do you want to use? 18 ? Which package manager do you want to use? yarn ? Do you want to run "yarn run build" before starting your server? Yes ? What directory is your build output to? (comma-separate if multiple) output ? What command do you want to use to start the app? node index.js ? What port does your server listen on? 8000 CREATED: .dockerignore CREATED: Dockerfile CREATED: compose.yaml ✔ Your Docker files are ready! Take a moment to review them and tailor them to your application. When you're ready, start your application by running: docker compose up --build Your application will be available at http://localhost:8000 ``` ### Example of selecting Python The following example shows the prompts that appear after selecting `Python` and example input. ```console ? What application platform does your project use? Python ? What version of Python do you want to use? 3.8 ? What port do you want your app to listen on? 8000 ? What is the command to run your app (e.g., gunicorn 'myapp.example:app' --bind=0.0.0.0:8000)? python ./app.py CREATED: .dockerignore CREATED: Dockerfile CREATED: compose.yaml ✔ Your Docker files are ready! Take a moment to review them and tailor them to your application. When you're ready, start your application by running: docker compose up --build Your application will be available at http://localhost:8000 ``` ### Example of selecting Rust The following example shows the prompts that appear after selecting `Rust` and example input. ```console ? What application platform does your project use? Rust ? What version of Rust do you want to use? 1.70.0 ? What port does your server listen on? 8000 CREATED: .dockerignore CREATED: Dockerfile CREATED: compose.yaml ✔ Your Docker files are ready! Take a moment to review them and tailor them to your application. When you're ready, start your application by running: docker compose up --build Your application will be available at http://localhost:8000 ``` ### Example of selecting Other The following example shows the output after selecting `Other`. ```console ? What application platform does your project use? Other CREATED: .dockerignore CREATED: Dockerfile CREATED: compose.yaml ✔ Your Docker files are ready! Take a moment to review them and tailor them to your application. When you're ready, start your application by running: docker compose up --build ```