Merge pull request #849 from vmassol/patch-2
[XWiki] Add support for postgres
This commit is contained in:
commit
fd1b1a3b52
112
xwiki/content.md
112
xwiki/content.md
|
|
@ -39,7 +39,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
|
||||
|
|
@ -47,13 +54,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.
|
||||
|
||||
|
|
@ -63,16 +90,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'
|
||||
|
|
@ -82,6 +111,7 @@ networks:
|
|||
services:
|
||||
web:
|
||||
image: "xwiki:mysql-tomcat"
|
||||
container_name: xwiki-mysql-tomcat-web
|
||||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
|
|
@ -89,13 +119,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
|
||||
|
|
@ -111,12 +142,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`
|
||||
|
|
@ -126,7 +206,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
|
||||
|
||||
|
|
@ -137,6 +217,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:
|
||||
|
|
@ -144,7 +236,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`.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue