|
@@ -1,7 +1,9 @@
|
|
|
# Supported tags and respective `Dockerfile` links
|
|
|
|
|
|
-- [`8`, `8.4`, `8.4.4`, `8-mysql-tomcat`, `mysql-tomcat`, `lts-mysql-tomcat`, `lts`, `latest` (*8/mysql-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/e1fa9996f7604f675307d4aa00c3c509000708b8/8/mysql-tomcat/Dockerfile)
|
|
|
-- [`9`, `9.0`, `9-mysql-tomcat`, `stable-mysql-tomcat`, `stable` (*9/mysql-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/e1fa9996f7604f675307d4aa00c3c509000708b8/9/mysql-tomcat/Dockerfile)
|
|
|
+- [`8`, `8.4`, `8.4.4`, `8-mysql-tomcat`, `mysql-tomcat`, `lts-mysql-tomcat`, `lts-mysql`, `lts`, `latest` (*8/mysql-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/478f413940c46b325ad8d2b99e430273966b3981/8/mysql-tomcat/Dockerfile)
|
|
|
+- [`9`, `9.0`, `9-mysql-tomcat`, `stable-mysql-tomcat`, `stable-mysql`, `stable` (*9/mysql-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/478f413940c46b325ad8d2b99e430273966b3981/9/mysql-tomcat/Dockerfile)
|
|
|
+- [`8-postgres-tomcat`, `8.4-postgres-tomcat`, `8.4.4-postgres-tomcat`, `postgres-tomcat`, `lts-postgres-tomcat`, `lts-postgres` (*8/postgres-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/478f413940c46b325ad8d2b99e430273966b3981/8/postgres-tomcat/Dockerfile)
|
|
|
+- [`9-postgres-tomcat`, `9.1-postgres-tomcat`, `stable-postgres-tomcat`, `stable-postgres` (*9/postgres-tomcat/Dockerfile*)](https://github.com/xwiki-contrib/docker-xwiki/blob/478f413940c46b325ad8d2b99e430273966b3981/9/postgres-tomcat/Dockerfile)
|
|
|
|
|
|
For more information about this image and its history, please see [the relevant manifest file (`library/xwiki`)](https://github.com/docker-library/official-images/blob/master/library/xwiki). This image is updated via [pull requests to the `docker-library/official-images` GitHub repo](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fxwiki).
|
|
|
|
|
@@ -48,7 +50,14 @@ Start by creating a dedicated docker network:
|
|
|
docker network create -d bridge xwiki-nw
|
|
|
```
|
|
|
|
|
|
-Then run a MySQL container and ensure you configure MySQL to use UTF8. The command below will also configure the MySQL container to save its data on your localhost in a `/my/own/mysql` directory:
|
|
|
+Then run a container for the database and make sure it's configured to use an UTF8 encoding. The following databases are supported out of the box:
|
|
|
+
|
|
|
+- MySQL
|
|
|
+- PostgreSQL
|
|
|
+
|
|
|
+#### Starting MySQL
|
|
|
+
|
|
|
+The command below will also configure the MySQL container to save its data on your localhost in a `/my/own/mysql` directory:
|
|
|
|
|
|
```console
|
|
|
docker run --net=xwiki-nw --name mysql-xwiki -v /my/own/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xwiki -e MYSQL_USER=xwiki -e MYSQL_PASSWORD=xwiki -e MYSQL_DATABASE=xwiki -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin --explicit-defaults-for-timestamp=1
|
|
@@ -56,13 +65,33 @@ docker run --net=xwiki-nw --name mysql-xwiki -v /my/own/mysql:/var/lib/mysql -e
|
|
|
|
|
|
You should adapt the command line to use the passwords that you wish for the MySQL root password and for the xwiki user password.
|
|
|
|
|
|
-Then run XWiki in another container by issuing the following command:
|
|
|
+#### Starting PostgreSQL
|
|
|
+
|
|
|
+The command below will also configure the PostgreSQL container to save its data on your localhost in a `/my/own/postgres` directory:
|
|
|
+
|
|
|
+```console
|
|
|
+docker run --net=xwiki-nw --name postgres-xwiki -v /my/own/postgres:/var/lib/postgresql/data -e POSTGRES_ROOT_PASSWORD=xwiki -e POSTGRES_USER=xwiki -e POSTGRES_PASSWORD=xwiki -e POSTGRES_DB=xwiki -e POSTGRES_INITDB_ARGS="--encoding=UTF8" -d postgres:9.5
|
|
|
+```
|
|
|
+
|
|
|
+You should adapt the command line to use the passwords that you wish for the PostgreSQL root password and for the xwiki user password.
|
|
|
+
|
|
|
+#### Starting XWiki
|
|
|
+
|
|
|
+Then run XWiki in another container by issuing one of the following command.
|
|
|
+
|
|
|
+For MySQL:
|
|
|
|
|
|
```console
|
|
|
docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /my/own/xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=mysql-xwiki xwiki:mysql-tomcat
|
|
|
```
|
|
|
|
|
|
-Be careful to use the same MySQL username, password and database names that you've used on the first command to start the MySQL container. Also, please don't forget to add a `-e DB_HOST=` environment variable with the name of the previously created MySQL container so that XWiki knows where its database is.
|
|
|
+For PostgreSQL:
|
|
|
+
|
|
|
+```console
|
|
|
+docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /my/own/xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=postgres-xwiki xwiki:postgres-tomcat
|
|
|
+```
|
|
|
+
|
|
|
+Be careful to use the same DB username, password and database names that you've used on the first command to start the DB container. Also, please don't forget to add a `-e DB_HOST=` environment variable with the name of the previously created DB container so that XWiki knows where its database is.
|
|
|
|
|
|
At this point, XWiki should start in interactive blocking mode, allowing you to see logs in the console. Should you wish to run it in "detached mode", just add a "-d" flag in the previous command.
|
|
|
|
|
@@ -72,16 +101,18 @@ docker run -d --net=xwiki-nw ...
|
|
|
|
|
|
### Using docker-compose
|
|
|
|
|
|
-Another solution is to use the Docker Compose file we provide. Run the following steps:
|
|
|
+Another solution is to use the Docker Compose files we provide.
|
|
|
+
|
|
|
+#### For MySQL
|
|
|
|
|
|
- `wget https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/8/mysql-tomcat/mysql/xwiki.cnf`: This will download the MySQL configuration (UTF8, etc)
|
|
|
- If you don't have `wget` or prefer to use `curl`: `curl -fSL https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/8/mysql-tomcat/mysql/xwiki.cnf -o xwiki.cnf`
|
|
|
-- `wget -O docker-compose.yml https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-using.yml`
|
|
|
- - If you don't have `wget` or prefer to use `curl`: `curl -fSL https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-using.yml -o docker-compose.yml`
|
|
|
+- `wget -O docker-compose.yml https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-mysql.yml`
|
|
|
+ - If you don't have `wget` or prefer to use `curl`: `curl -fSL https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-mysql.yml -o docker-compose.yml`
|
|
|
- You can edit the compose file retrieved to change the default username/password and other environment variables.
|
|
|
- `docker-compose up`
|
|
|
|
|
|
-For reference here's a minimal Docker Compose file using MySQL that you could use as an example (full example [here](https://github.com/xwiki-contrib/docker-xwiki/blob/master/docker-compose-using.yml)):
|
|
|
+For reference here's a minimal Docker Compose file using MySQL that you could use as an example (full example [here](https://github.com/xwiki-contrib/docker-xwiki/blob/master/docker-compose-mysql.yml)):
|
|
|
|
|
|
```yaml
|
|
|
version: '2'
|
|
@@ -91,6 +122,7 @@ networks:
|
|
|
services:
|
|
|
web:
|
|
|
image: "xwiki:mysql-tomcat"
|
|
|
+ container_name: xwiki-mysql-tomcat-web
|
|
|
depends_on:
|
|
|
- db
|
|
|
ports:
|
|
@@ -98,13 +130,14 @@ services:
|
|
|
environment:
|
|
|
- DB_USER=xwiki
|
|
|
- DB_PASSWORD=xwiki
|
|
|
- - DB_HOST=xwiki-mysql
|
|
|
+ - DB_HOST=xwiki-mysql-db
|
|
|
volumes:
|
|
|
- xwiki-data:/usr/local/xwiki
|
|
|
networks:
|
|
|
- bridge
|
|
|
db:
|
|
|
image: "mysql:5.7"
|
|
|
+ container_name: xwiki-mysql-db
|
|
|
volumes:
|
|
|
- ./xwiki.cnf:/etc/mysql/conf.d/xwiki.cnf
|
|
|
- mysql-data:/var/lib/mysql
|
|
@@ -120,12 +153,61 @@ volumes:
|
|
|
xwiki-data: {}
|
|
|
```
|
|
|
|
|
|
+#### For PostgreSQL
|
|
|
+
|
|
|
+- `wget -O docker-compose.yml https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-postgres.yml`
|
|
|
+ - If you don't have `wget` or prefer to use `curl`: `curl -fSL https://raw.githubusercontent.com/xwiki-contrib/docker-xwiki/master/docker-compose-postgres.yml -o docker-compose.yml`
|
|
|
+- You can edit the compose file retrieved to change the default username/password and other environment variables.
|
|
|
+- `docker-compose up`
|
|
|
+
|
|
|
+For reference here's a minimal Docker Compose file using PostgreSQL that you could use as an example (full example [here](https://github.com/xwiki-contrib/docker-xwiki/blob/master/docker-compose-postgres.yml)):
|
|
|
+
|
|
|
+```yaml
|
|
|
+version: '2'
|
|
|
+networks:
|
|
|
+ bridge:
|
|
|
+ driver: bridge
|
|
|
+services:
|
|
|
+ web:
|
|
|
+ image: "xwiki:postgres-tomcat"
|
|
|
+ container_name: xwiki-postgres-tomcat-web
|
|
|
+ depends_on:
|
|
|
+ - db
|
|
|
+ ports:
|
|
|
+ - "8080:8080"
|
|
|
+ environment:
|
|
|
+ - DB_USER=xwiki
|
|
|
+ - DB_PASSWORD=xwiki
|
|
|
+ - DB_HOST=xwiki-postgres-db
|
|
|
+ volumes:
|
|
|
+ - xwiki-data:/usr/local/xwiki
|
|
|
+ networks:
|
|
|
+ - bridge
|
|
|
+ db:
|
|
|
+ image: "postgres:9.5"
|
|
|
+ container_name: xwiki-postgres-db
|
|
|
+ volumes:
|
|
|
+ - postgres-data:/var/lib/postgresql/data
|
|
|
+ environment:
|
|
|
+ - POSTGRES_ROOT_PASSWORD=xwiki
|
|
|
+ - POSTGRES_PASSWORD=xwiki
|
|
|
+ - POSTGRES_USER=xwiki
|
|
|
+ - POSTGRES_DB=xwiki
|
|
|
+ - POSTGRES_INITDB_ARGS="--encoding=UTF8"
|
|
|
+ networks:
|
|
|
+ - bridge
|
|
|
+volumes:
|
|
|
+ postgres-data: {}
|
|
|
+ xwiki-data: {}
|
|
|
+```
|
|
|
+
|
|
|
## Building
|
|
|
|
|
|
This allows you to rebuild the XWiki docker image locally. Here are the steps:
|
|
|
|
|
|
- Install Git and run `git clone https://github.com/xwiki-contrib/docker-xwiki.git` or download the sources from the GitHub UI. Then go to the directory corresponding to the docker tag you wish to use. For example: `cd 8/mysql-tomcat`
|
|
|
- The `8/mysql-tomcat` directory will get you the latest released XWiki version of the 8.x cycle running on Tomcat and for MySQL.
|
|
|
+ - The `8/postgres-tomcat` directory will get you the latest released XWiki version of the 8.x cycle running on Tomcat and for MySQL.
|
|
|
- The `9/mysql-tomcat` directory will get you the latest released XWiki version of the 9.x cycle running on Tomcat and for MySQL.
|
|
|
- etc.
|
|
|
- Run `docker-compose up`
|
|
@@ -135,7 +217,7 @@ Note that if you want to set a custom version of XWiki you can edit the `.env` f
|
|
|
|
|
|
Note that `docker-compose up` will automatically build the XWiki image on the first run. If you need to rebuild it you can issue `docker-compose up --build`. You can also build the image with `docker build . -t xwiki-mysql-tomcat:latest` for example.
|
|
|
|
|
|
-# Details for xwiki-mysql-tomcat
|
|
|
+# Details for the xwiki image
|
|
|
|
|
|
## Configuration Options
|
|
|
|
|
@@ -146,6 +228,18 @@ The first time you create a container out of the xwiki image, a shell script (`/
|
|
|
- `DB_DATABASE`: The name of the XWiki database to use/create.
|
|
|
- `DB_HOST`: The name of the host (or docker container) containing the database. Default is "db".
|
|
|
|
|
|
+## Passing JVM options
|
|
|
+
|
|
|
+It's possible to pass JVM options to Tomcat by defining the `JAVA_OPTS` environment property.
|
|
|
+
|
|
|
+For example to debug XWiki, you could use:
|
|
|
+
|
|
|
+```console
|
|
|
+docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=mysql-xwiki -e JAVA_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" -p 5005:5005 xwiki
|
|
|
+```
|
|
|
+
|
|
|
+Notice the mapping of the port with `p 5005:5005` which expose the port and thus allows you to debug XWiki from within your IDE for example.
|
|
|
+
|
|
|
## Miscellaneous
|
|
|
|
|
|
Volumes:
|
|
@@ -153,7 +247,7 @@ Volumes:
|
|
|
If you don't map any volume when using `docker run` or if you use `docker-compose` then Docker will create some internal volumes attached to your containers as follows.
|
|
|
|
|
|
- Two volumes are created:
|
|
|
- - A volume named `<prefix>_mysql-data` that contains the database data.
|
|
|
+ - A volume named `<prefix>_mysql-data` or `<prefix>_postgres-data` that contains the database data.
|
|
|
- A volume named `<prefix>_xwiki-data` that contains XWiki's permanent directory.
|
|
|
- To find out where those volumes are located on your local host machine you can inspect them with `docker volume inspect <volume name>`. To find the volume name, you can list all volumes with `docker volume ls`.
|
|
|
|