forked from Dolibarr/dolibarr-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.template
233 lines (174 loc) · 11.4 KB
/
README.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# Dolibarr on Docker
Docker image for Dolibarr ERP & CRM Open source web suite.
Dolibarr is a modern software package to manage your organization's activity (contacts, quotes, invoices, orders, stocks, agenda, hr, expense reports, accountancy, ecm, manufacturing, ...).
> [More information](https://github.com/dolibarr/dolibarr)
## Supported tags
%TAGS%
**End of support for PHP < 7.4**
**Dolibarr versions 14 and lower are no more updated**
## Supported architectures
Linux x86-64 (`amd64`), ARMv7 32-bit (`arm32v7` :warning: MariaDB/Mysql docker images don't support it) and ARMv8 64-bit (`arm64v8`)
## How to run this image ?
This image is based on the [official PHP repository](https://registry.hub.docker.com/_/php/) and the [official Dolibarr repository](https://github.com/Dolibarr/dolibarr). It is build
using the tools saved in the [Dolibarr docker build repository](https://github.com/Dolibarr/dolibarr-docker).
This image does not contains database, so you need to link it with a database container. Let's use [Docker Compose](https://docs.docker.com/compose/) to integrate it with [MariaDB](https://hub.docker.com/_/mariadb/) (you can also use [MySQL](https://hub.docker.com/_/mysql/) if you prefer):
If you want to have a persistent database and dolibarr data files after reboot or upgrade, you must first
create a directory `/home/mariadb_data`, `/home/dolibarr_documents` and `/home/dolibarr_custom` on your host to store persistent files, respectively, of the database, of the Dolibarr document files and of the installed external Dolibarr modules.
`mkdir /home/mariadb_data /home/dolibarr_documents /home/dolibarr_custom;`
Then, create a `docker-compose.yml` file as following:
```yaml
services:
mariadb:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dolibarr
volumes:
- /home/mariadb_data:/var/lib/mysql
web:
image: dolibarr/dolibarr:latest
environment:
DOLI_DB_HOST: mariadb
DOLI_DB_USER: root
DOLI_DB_PASSWORD: root
DOLI_DB_NAME: dolibarr
DOLI_URL_ROOT: 'http://0.0.0.0'
DOLI_ADMIN_LOGIN: 'admin'
DOLI_ADMIN_PASSWORD: 'admin'
DOLI_INIT_DEMO: 0
WWW_USER_ID: 1000
WWW_GROUP_ID: 1000
ports:
- "80:80"
links:
- mariadb
volumes:
- /home/dolibarr_documents:/var/www/documents
- /home/dolibarr_custom:/var/www/html/custom
```
Then build and run all services (-d is to run in background)
`sudo docker-compose up -d`
You can check the web and the mariadb containers are up and see logs with
`sudo docker-compose ps`
`sudo docker-compose logs`
Once the log shows that the start is complete, go to http://0.0.0.0 to access to the new Dolibarr installation, first admin login is admin/admin.
Note: If the host port 80 is already used, you can replace "80:80" with "xx:80" where xx a free port on the host. You will be
able to access the Dolibarr using the URL http://0.0.0.0:xx
Other examples:
You can find several examples in the `examples` directory, such as:
- [Running Dolibarr with a mysql server](./examples/with-mysql/dolibarr-with-mysql.md)
- [Running Dolibarr with a Traefik reverse proxy](./examples/with-rp-traefik/dolibarr-with-traefik.md)
- [Running Dolibarr with secrets](./examples/with-secrets/dolibarr-with-secrets.md)
## Upgrading Dolibarr version and migrating DB
Warning: Only data stored into persistent directories will not be lost after an upgrade of containers.
Remove the `install.lock` file. The `install.lock` file is located inside the container volume `/var/www/documents`.
`sudo docker exec nameofwebcontainer bash -c "rm -f /var/www/documents/install.lock"`
or
`sudo docker exec -it nameofwebcontainer bash`
`rm -f /var/www/documents/install.lock; exit`
Then start an updated version container.
`sudo docker-compose pull`
`sudo docker-compose up -d`
`sudo docker-compose logs`
Ensure that env `DOLI_INSTALL_AUTO` is set to `1` so it will migrate Database to the new version.
You can still use the standard way to upgrade through web interface.
## Early support for PostgreSQL
Setting `DOLI_DB_TYPE` to `pgsql` enable Dolibarr to run with a PostgreSQL database.
When set to use `pgsql`, Dolibarr must be installed manually on it's first execution:
- Browse to `http://0.0.0.0/install`;
- Follow the installation setup;
- Add `install.lock` inside the container volume `/var/www/html/documents` (ex `docker-compose exec services-data_dolibarr_1 /bin/bash -c "touch /var/www/html/documents/install.lock"`).
When setup this way, to upgrade version the use of the web interface is mandatory:
- Remove the `install.lock` file (ex `docker-compose exec services-data_dolibarr_1 /bin/bash -c "rm -f /var/www/html/documents/install.lock"`).
- Browse to `http://0.0.0.0/install`;
- Upgrade DB;
- Add `install.lock` inside the container volume `/var/www/html/documents` (ex `docker-compose exec services-data_dolibarr_1 /bin/bash -c "touch /var/www/html/documents/install.lock"`).
## Environment variables summary
You can use the following variables for a better customization of your docker-compose file.
| Variable | Default value | Description |
| ------------------------------- | ------------------------------ | ----------- |
| **DOLI_INSTALL_AUTO** | *1* | 1: The installation will be done during docker first boot
| **DOLI_INIT_DEMO** | *0* | 1: The installation will also load demo data during docker first boot
| **DOLI_PROD** | *1* | 1: Dolibarr will be run in production mode
| **DOLI_DB_TYPE** | *mysqli* | Type of the DB server (**mysqli**, pgsql)
| **DOLI_DB_HOST** | *mysql* | Host name of the MariaDB/MySQL server
| **DOLI_DB_HOST_PORT** | *3306* | Host port of the MariaDB/MySQL server
| **DOLI_DB_USER** | *doli* | Database user
| **DOLI_DB_PASSWORD** | *doli_pass* | Database user's password
| **DOLI_DB_NAME** | *dolidb* | Database name
| **DOLI_ADMIN_LOGIN** | *admin* | Admin's login created on the first boot
| **DOLI_ADMIN_PASSWORD** | *admin* | Admin's initial password created on the first boot
| **DOLI_URL_ROOT** | *http://localhost* | Url root of the Dolibarr installation
| **DOLI_ENABLE_MODULES** | | Comma-separated list of modules to be activated at install. modUser will always be activated. (Ex: `Societe,Facture,Stock`)
| **DOLI_COMPANY_NAME** | | Set the company name of Dolibarr at container init
| **DOLI_COMPANY_COUNTRYCODE** | | Set the company and Dolibarr country at container init. Need 2-letter codes like "FR", "GB", "US",...
| **PHP_INI_DATE_TIMEZONE** | *UTC* | Default timezone on PHP
| **PHP_INI_MEMORY_LIMIT** | *256M* | PHP Memory limit
| **PHP_INI_UPLOAD_MAX_FILESIZE** | *2M* | PHP Maximum allowed size for uploaded files
| **PHP_INI_POST_MAX_SIZE** | *8M* | PHP Maximum size of POST data that PHP will accept.
| **PHP_INI_ALLOW_URL_FOPEN** | *0* | Allow URL-aware fopen wrappers
| **WWW_USER_ID** | | ID of user www-data. ID will not changed if leave empty. During a development, it is very practical to put the same ID as the host user.
| **WWW_GROUP_ID** | | ID of group www-data. ID will not changed if leave empty.
| **DOLI_AUTH** | *dolibarr* | Which method is used to connect users, change to `ldap` or `ldap, dolibarr` to use LDAP
| **DOLI_LDAP_HOST** | *127.0.0.1* | The host of the LDAP server
| **DOLI_LDAP_PORT** | *389* | The port of the LDAP server
| **DOLI_LDAP_VERSION** | *3* | The version of LDAP to use
| **DOLI_LDAP_SERVER_TYPE** | *openldap* | The type of LDAP server (openLDAP, Active Directory, eGroupWare)
| **DOLI_LDAP_LOGIN_ATTRIBUTE** | *uid* | The attribute used to bind users
| **DOLI_LDAP_DN** | *ou=users,dc=my-domain,dc=com* | The base where to look for users
| **DOLI_LDAP_FILTER** | | The filter to authorise users to connect
| **DOLI_LDAP_BIND_DN** | | The complete DN of the user with read access on users
| **DOLI_LDAP_BIND_PASS** | | The password of the bind user
| **DOLI_LDAP_DEBUG** | *false* | Activate debug mode
| **DOLI_CRON** | *0* | 1: Enable cron service
| **DOLI_CRON_KEY** | | Security key launch cron jobs
| **DOLI_CRON_USER** | | Dolibarr user used for cron jobs
| **DOLI_INSTANCE_UNIQUE_ID** | | Secret ID used as a salt / key for some encryption. By default, it is set randomly when the docker container is created.
Some environment variables are compatible with docker secrets behaviour, just add the `_FILE` suffix to var name and point the value file to read.
Environment variables that are compatible with docker secrets:
* `DOLI_DB_USER` => `DOLI_DB_USER_FILE`
* `DOLI_DB_PASSWORD` => `DOLI_DB_PASSWORD_FILE`
* `DOLI_ADMIN_LOGIN` => `DOLI_ADMIN_LOGIN_FILE`
* `DOLI_ADMIN_PASSWORD` => `DOLI_ADMIN_PASSWORD_FILE`
* `DOLI_CRON_KEY` => `DOLI_CRON_KEY_FILE`
* `DOLI_CRON_USER` => `DOLI_CRON_USER_FILE`
* `DOLI_INSTANCE_UNIQUE_ID` => `DOLI_INSTANCE_UNIQUE_ID_FILE`
## Add post-deployment and before starting scripts
It is possible to execute `*.sh`, `*.sql` and/or `*.php` custom file at the end of deployment or before starting Apache by mounting volumes.
For scripts executed during deployment mount volume in `/var/www/scripts/docker-init.d`.
For scripts executed before Apache stating mount volume in `/var/www/scripts/before-starting.d`.
```
\docker-init.d
|- custom_script.sql
|- custom_script.php
|- custom_script.sh
```
Mount the volumes with compose file :
```yaml
services:
mariadb:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dolibarr
web:
image: dolibarr/dolibarr
environment:
DOLI_DB_HOST: mariadb
DOLI_DB_USER: root
DOLI_DB_PASSWORD: root
DOLI_DB_NAME: dolibarr
DOLI_URL_ROOT: 'http://0.0.0.0'
DOLI_ADMIN_LOGIN: 'admin'
DOLI_ADMIN_PASSWORD: 'admin'
DOLI_INIT_DEMO: 0
WWW_USER_ID: 1000
WWW_GROUP_ID: 1000
volumes :
- volume-scripts:/var/www/scripts/docker-init.d
- before-starting-scripts:/var/www/scripts/before-starting.d
ports:
- "80:80"
links:
- mariadb
```