- Move some docs to nginx and checks pages - Flesh out dockerfiles and image tagging documentation a bit on their own pages
38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# Dockerfile Deployment
|
|
|
|
> New as of 0.3.15
|
|
|
|
While dokku normally defaults to using [heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) for deployment, you can also use docker's native `Dockerfile` system to define a container.
|
|
|
|
To use a dockerfiles for deployment, commit a valid `Dockerfile` to the root of your repository and push the repository to your Dokku installation. If this file is detected, Dokku will default to using it to construct containers **except** in the following two cases:
|
|
|
|
- The application has a `BUILDPACK_URL` environment variable set via the `dokku config:set` command or in a committed `.env` file. In this case, dokku will use your specified buildpack.
|
|
- The application has a `.buildpacks` file in the root of the repository. In this case, dokku will use your specified buildpack(s).
|
|
|
|
## Exposed ports
|
|
|
|
By default, Dokku will extract the first `EXPOSE` port and use said port with nginx to proxy your app to that port. For applications that have multiple ports exposed, you may override this port via the following command:
|
|
|
|
```shell
|
|
# replace APP with the name of your application
|
|
dokku config:set APP DOKKU_DOCKERFILE_PORT=8000
|
|
```
|
|
|
|
Dokku will not expose other ports on your application without a [custom docker-option](/dokku/configuration/docker-options/).
|
|
|
|
By default no arguments are passed to `docker run` when deploying the container and the `CMD` or `ENTRYPOINT` defined in the `Dockerfile` are executed. You can take advantage of docker ability of overriding the `CMD` or passing parameters to your `ENTRYPOINT` setting `$DOKKU_DOCKERFILE_START_CMD`. Let's say for example you are deploying a base nodejs image, with the following `ENTRYPOINT`:
|
|
|
|
```
|
|
ENTRYPOINT ["node"]
|
|
```
|
|
|
|
You can do:
|
|
|
|
```
|
|
dokku config:set DOKKU_DOCKERFILE_START_CMD="--harmony server.js"
|
|
```
|
|
|
|
To tell docker what to run.
|
|
|
|
Setting `$DOKKU_DOCKERFILE_CACHE_BUILD` to `true` or `false` will enable or disable docker's image layer cache. Lastly, for more granular build control, you may also pass any `docker build` option to `docker`, by setting `$DOKKU_DOCKER_BUILD_OPTS`.
|