Start
docker-compose up -d
Stop
docker-compose down
Update Confluence
docker-compose up -d --build --force-recreate --remove-orphans wiki-server
Configure
initial docer-compose file
docker-compose.yml
version: "2.0"
services:
wiki-lb:
image: nginx
ports:
- 80:80
- 443:443
volumes:
- /docker/etc/nginx:/etc/nginx
- /docker/etc/ssl:/etc/ssl:ro
wiki-server:
image: atlassian/confluence-server
ports:
- 8090:8090
- 8091:8091
environment:
- POSTGRES_INITDB_ARGS="--encoding=UTF8 --lc-collate='en_US.UTF-8'
- CATALINA_CONNECTOR_PROXYNAME=wiki.example.com
- CATALINA_CONNECTOR_PROXYPORT=443
- CATALINA_CONNECTOR_SCHEME=https
- CATALINA_CONNECTOR_SECURE=true
- CATALINA_OPTS=-Xms1g -Xmx4g
- JVM_MINIMUM_MEMORY=1024m
- JVM_MAXIMUM_MEMORY=4096m
- CONFLUENCE_CONFIG_PROPERTY1=confluence.setup.server.id
- CONFLUENCE_CONFIG_VALUE1=xxxx-xxxx-xxxx-xxxx
- ATL_TOMCAT_MAXTHREADS=35
volumes:
- /docker/var/atlassian/application-data/confluence:/var/atlassian/application-data/confluence
depends_on:
- wiki-lb
- wiki-db
wiki-db:
image: postgres:10
ports:
- 5432:5432
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_ENCODING=UTF8
- POSTGRES_COLLATE=en_US.UTF-8
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- /docker/var/lib/postgresql/data:/var/lib/postgresql/data
after couple of update iterations
version: "2.0"
services:
wiki-lb:
image: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
- /docker/etc/nginx:/etc/nginx
- /docker/etc/ssl:/etc/ssl:ro
wiki-server:
image: atlassian/confluence-server:7.18.1
restart: unless-stopped
ports:
- 8090:8090
- 8091:8091
environment:
- ATL_PROXY_NAME=wiki.example.com
- ATL_PROXY_PORT=443
- ATL_TOMCAT_PORT=8090
- ATL_TOMCAT_SCHEME=https
- ATL_TOMCAT_MAXTHREADS=48
- ATL_TOMCAT_MINSPARETHREAD=6
- ATL_TOMCAT_MAXHTTPHEADERSIZE=8192
- ATL_DB_POOLMAXSIZE=125
- ATL_DB_TYPE=postgresql
- ATL_JDBC_URL=jdbc:postgresql://127.0.0.1:5432/confluence
- ATL_JDBC_USER=database1user
- ATL_JDBC_PASSWORD=database1password
- ATL_LICENSE_KEY=AAAB...//YOUR_LICENSE_KEY//..ii
- JVM_MINIMUM_MEMORY=2048m
- JVM_MAXIMUM_MEMORY=8192m
- CONFLUENCE_CONFIG_PROPERTY1=confluence.setup.server.id
- CONFLUENCE_CONFIG_VALUE1=XXXX-XXXX-XXXX-XXXX
volumes:
- /docker/var/atlassian/application-data/confluence:/var/atlassian/application-data/confluence
depends_on:
- wiki-lb
- wiki-db
wiki-db:
image: postgres:10.21
restart: always
ports:
- 5432:5432
environment:
- POSTGRES_USER=database1user
- POSTGRES_PASSWORD=database1password
- POSTGRES_ENCODING=UTF8
- POSTGRES_COLLATE=en_US.UTF-8
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- /docker/var/lib/postgresql/data:/var/lib/postgresql/data
nginx config
/docker/etc/nginx/sites-enabled/wiki
server {
listen 80;
server_name wiki.example.com;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload;';
return 301 https://$server_name$request_uri;
location / {
}
}
server {
listen 443 ssl http2;
server_name wiki.example.com;
ssl on;
ssl_certificate /etc/ssl/private/wiki.example.com.pem;
ssl_certificate_key /etc/ssl/private/wiki.example.com.key;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA HIGH !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate "/etc/ssl/certs/ca-certs.pem";
resolver 1.1.1.1 8.8.4.4 valid=300s;
resolver_timeout 5s;
location /.well-known {
alias /var/www/$server_name/.well-known;
}
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8090;
}
}
Confluence config
/docker/var/atlassian/application-data/confluence/confluence.cfg.xml
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.url">jdbc:postgresql://192.168.0.1:5432/confluence</property>
<property name="hibernate.connection.username">user</property>
postgresql config
/docker/var/lib/postgresql/data/pgdata/postgresql.conf
listen_addresses = '*' max_connections = 100 # (change requires restart) shared_buffers = 128MB # min 128kB dynamic_shared_memory_type = posix # the default is the first option log_timezone = 'UTC' datestyle = 'iso, mdy' timezone = 'UTC' lc_messages = 'en_US.utf8' # locale for system error message lc_monetary = 'en_US.utf8' # locale for monetary formatting lc_numeric = 'en_US.utf8' # locale for number formatting lc_time = 'en_US.utf8' # locale for time formatting default_text_search_config = 'pg_catalog.english'
/docker/var/lib/postgresql/data/pgdata/pg_hba.conf
local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust host all all all md5
Confluence backup
rm -f /docker/var/atlassian/application-data/confluence/backups/backup-2* tar -czvf /tmp/confluence-`date --iso`.tar.gz /docker/var/atlassian/application-data/confluence/ docker exec root_wiki-db_1 pg_dump -h localhost -p 5432 -U dbuser confluence >/tmp/confluence-`date --iso`.sql
Restart after configuration update
docker-compose down ;docker-compose up -d --build --force-recreate; docker-compose logs --follow