## Docker Containers

- [GitHub](https://github.com/wekan/wekan/pkgs/container/wekan)
- [Docker Hub](https://hub.docker.com/r/wekanteam/wekan)
- [Quay](https://quay.io/repository/wekan/wekan)

docker-compose.yml at https://github.com/wekan/wekan

Edit it to have IP address of your server
```
export ROOT_URL=http://SERVER-IP-ADDRESS-HERE
```
Then start WeKan with:
```
docker-compose up -d
```

SSL/TLS info at https://github.com/wekan/wekan/wiki/Settings

## Please only use Docker release tags

## Repair Docker

[Repair Docker](Repair-Docker)

## Using only Docker commands

[![Docker Repository on Quay](https://quay.io/repository/wekan/wekan/status "Docker Repository on Quay")](https://quay.io/repository/wekan/wekan)

[Many tags available](https://quay.io/repository/wekan/wekan?tab=tags)

## Note: docker-compose.yml works

There is much more settings at well-documented [docker-compose.yml](https://raw.githubusercontent.com/wekan/wekan/master/docker-compose.yml), those can also be added to be used below.

If you don't need to build Wekan, use prebuilt container with docker-compose.yml from https://github.com/wekan/wekan like this:
```
docker-compose up -d
```

If you like to build from source, clone Wekan repo:
```
git clone https://github.com/wekan/wekan
```
Then edit docker-compose.yml with [these lines uncommented](https://github.com/wekan/wekan/blob/main/docker-compose.yml#L132-L142) this way:
```
   #-------------------------------------------------------------------------------------
    # ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
    # ==== and use commands: docker-compose up -d --build
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - NODE_VERSION=${NODE_VERSION}
        - METEOR_RELEASE=${METEOR_RELEASE}
        - NPM_VERSION=${NPM_VERSION}
        - ARCHITECTURE=${ARCHITECTURE}
        - SRC_PATH=${SRC_PATH}
        - METEOR_EDGE=${METEOR_EDGE}
        - USE_EDGE=${USE_EDGE}
    #-------------------------------------------------------------------------------------
```
Then you can build Wekan with 
```
docker-compose up -d --build
```

## Example for latest Wekan, port 2000 to Docker Wekan internal port 8080
```
docker run -d --restart=always --name wekan-db mongo:5

docker run -d --restart=always --name wekan --link "wekan-db:db" -e "WITH_API=true" -e "MONGO_URL=mongodb://wekan-db:27017/wekan" -e "ROOT_URL=http://192.168.1.200:2000" -p 2000:8080 wekanteam/wekan:v5.41
```
Specific release in above URL, not latest:
```
quay.io/wekan/wekan:v3.37
```
For latest development version, use without tag:
```
quay.io/wekan/wekan
```

## DockerBunker: Easy Docker management

[Managing Docker containers with DockerBunker](https://github.com/chaosbunker/dockerbunker)

## CaptainDuckDuck

[Managing Docker containers with CaptainDuckDuck](https://github.com/wekan/wekan/issues/1375#issuecomment-413626075)

## Backup and Upgrade

[Import/Export MongoDB data to/from Docker container](Export-Docker-Mongo-Data)

[Move Docker containers to other computer](Move-Docker-containers-to-other-computer), needs more details

### Backup before upgrade
```
docker stop wekan-app
docker exec -it wekan-db bash
cd /data
rm -rf dump
mongodump
exit
docker start wekan-app
docker cp wekan-db:/data/dump .
```
### Upgrade
```
docker stop wekan-app
docker rm wekan-app
```
Then edit docker-compose.yml to have higher wekan-app image version tag, like `image: wekanteam/wekan:v4.12`. Then:
```
docker-compose up -d
```
### Images
Quay: `image: quay.io/wekan/wekan:v4.07`
Docker Hub: `image: wekanteam/wekan:v4.07`

### Restore
```
docker stop wekan-app
docker exec -it wekan-db bash
cd /data
rm -rf dump
exit
docker cp dump wekan-db:/data/
docker exec -it wekan-db bash
cd /data
mongorestore --drop
exit
docker start wekan-app
```
## Cleanup

[Cleanup and delete all Docker data to get Docker Compose working](https://github.com/wekan/wekan/issues/985)

[Cleanup scripts to remove old data](https://github.com/wekan/wekan-cleanup)

## Docker Compose

[Docker Compose: Wekan <=> MongoDB](https://github.com/wekan/wekan-mongodb). REQUIRED: READ AND ADD SETTINGS LIKE ROOT_URL ETC TO docker-compose.yml textfile. It also has info about using same MongoDB database for office and VPN users.

[Docker Compose: Wekan <=> MongoDB <=> ToroDB => PostgreSQL read-only mirroring](https://github.com/wekan/wekan-postgresql)

TODO: [Docker Compose: Wekan <=> MongoDB <=> ToroDB => MySQL read-only mirroring](https://github.com/torodb/stampede/issues/203)

## OpenShift

[OpenShift](OpenShift)

## SLES

[SLES SP1](Install-Wekan-Docker-on-SUSE-Linux-Enterprise-Server-12-SP1)

## Rancher

[Rancher Rancher Active Proxy](Rancher---Rancher-Active-Proxy---Wekan-MongoDB-Docker)

## Testing

[Install for testing](Install-Wekan-Docker-for-testing)

## Production

[Production setup for thousands of users with Docker at AWS](AWS)

[Other way to do production](Install-Wekan-Docker-in-production)

## External MongoDB auth

[External MongoDB authentication](https://github.com/wekan/wekan/issues/1375)

## Admin Panel

First registered Wekan user will get Admin Panel on new Docker and source based
installs. You can also [enable Admin Panel manually](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v0111-rc2-2017-03-05-wekan-prerelease)

## Docker Hub - sometimes broken

Currently there are two dockerhub builds for wekan. One at [mquandalle dockerhub](https://hub.docker.com/r/mquandalle/wekan/builds/) and another at [wekanteam dockerhub](https://hub.docker.com/r/wekanteam/wekan/builds/). 

[wekanteam dockerhub](https://hub.docker.com/r/wekanteam/wekan/builds/) is usually broken.

## Development:

### `docker run` examples

- MongoDB:

```
docker run -d --restart=always --name wekan-db mongo:3.2.20
```

- No build step, pull from the [quay](https://quay.io/repository/wekan/wekan?tab=tags) and
specify docker variables

```
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "MONGO_URL=mongodb://db" -e "ROOT_URL=http://localhost:8080" -p 8080:8080 quay.io/wekan/wekan
```


### `docker-compose` examples

- No build step and pull from [quay](https://quay.io/repository/wekan/wekan?tab=tags)

```
sudo docker-compose up -d --nobuild
```

- Build default
```
sudo docker-compose up -d --build
```

- Build with newer Node version:
```
echo 'NODE_VERSION=v8.11.1' >> .env && \
sudo docker-compose up -d --build
```

- Build custom image off a release candidate or beta for meteor
```
echo 'METEOR_EDGE=1.5-beta.17' >> .env && \
echo 'USE_EDGE=true' >> .env && \
sudo docker-compose up -d --build
```

## Docker env for Wekan dev

* [Docker environment for Wekan Development](https://github.com/wekan/wekan-dev)

## Alpine, needs testing

* [Docker Compose: Alpine Linux and Wekan <=> MongoDB](https://github.com/wekan/wekan-launchpad)

## Webserver Config

* [Caddy Webserver Config](Caddy-Webserver-Config)
* [Nginx Webserver Config](Nginx-Webserver-Config)
* [Apache Webserver Config](Apache)