# Running server with docker custom volumes

**URL:** <https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040>\
**Category:** PMM 1.x\
**Created:** [May 30, 2019, 2:04pm UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040 "2019-05-30T14:04:59Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rpedrero](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rpedrero](https://forums.percona.com/u/rpedrero)\
**Post date:** [May 30, 2019, 2:04pm UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/1 "2019-05-30T14:04:59Z")

</div>

I’m trying this:

docker create  
-v /data/prometheus/data:/opt/prometheus/data  
-v /data/consul-data:/opt/consul-data  
-v /data/mysql:/var/lib/mysql  
-v /data/grafana:/var/lib/grafana  
–name pmm-data percona/pmm-server /bin/true

docker run -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server

But with this config, the server doesn’t start.

Can anyone help me?

---

<div class="post-metadata">

**Author:** ![rpedrero](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rpedrero](https://forums.percona.com/u/rpedrero)\
**Post date:** [May 29, 2019, 5:58pm UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/2 "2019-05-29T17:58:17Z")

</div>

Hi!

I’m new at here, and this is my first post.

I’m trying to run the docker image with custome volumes, because I want to save all data in /data.

At here, my try.

docker create   
-v /data/prometheus/data:/opt/prometheus/data   
-v /data/consul-data:/opt/consul-data   
-v /data/mysql:/var/lib/mysql   
-v /data/grafana:/var/lib/grafana   
–name pmm-data   
percona/pmm-server /bin/true

docker run -d   
-p 80:80   
–volumes-from pmm-data   
–name pmm-server   
–restart always   
percona/pmm-server

Also, I tried to run this as docker-composer.yml (my first preference)

services:  
percona:  
image: percona/pmm-server  
restart: always  
ports:

- 80:80  
volumes:
- /data/prometheus/data:/opt/prometheus/data
- /data/consul-data:/opt/consul-data
- /data/mysql:/var/lib/mysql
- /data/grafana:/var/lib/grafana

This is I can see at /data,

root@perconamm:/data# ls -la \*  
consul-data:  
total 8  
drwxr-xr-x 2 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …

grafana:  
total 12  
drwxr-xr-x 3 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …  
-rw-r–r-- 1 root root 0 May 29 23:04 grafana.db  
drwxr-xr-x 3 root root 4096 May 29 23:26 plugins

mysql:  
total 8  
drwxr-xr-x 2 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …

prometheus:  
total 12  
drwxr-xr-x 3 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …  
drwxr-xr-x 2 root root 4096 May 29 23:04 data

Volumes seems work correctly.

But the server doesn’t work, I have this:

502 Bad Gateway  
nginx

docker logs is showing this all time:

2019-05-29 23:27:03,457 INFO exited: createdb (exit status 1; not expected)  
2019-05-29 23:27:04,458 INFO success: createdb3 entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-29 23:27:04,461 INFO spawned: ‘createdb’ with pid 8093  
2019-05-29 23:27:04,937 INFO spawned: ‘grafana’ with pid 8096  
2019-05-29 23:27:04,976 INFO exited: grafana (exit status 1; not expected)  
2019-05-29 23:27:05,978 INFO success: createdb entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-29 23:27:06,004 INFO exited: dashboard-upgrade (exit status 1; not expected)  
2019-05-29 23:27:06,147 INFO spawned: ‘dashboard-upgrade’ with pid 8106  
2019-05-29 23:27:06,149 INFO success: dashboard-upgrade entered RUNNING state, process has stayed up for \> than 0 seconds (startsecs)  
2019-05-29 23:27:06,152 INFO exited: qan-api (exit status 1; not expected)  
2019-05-29 23:27:06,346 INFO spawned: ‘qan-api’ with pid 8114  
2019-05-29 23:27:07,149 INFO exited: createdb2 (exit status 1; not expected)  
2019-05-29 23:27:08,151 INFO success: qan-api entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-29 23:27:08,153 INFO spawned: ‘createdb2’ with pid 8118  
2019-05-29 23:27:08,468 INFO exited: createdb3 (exit status 1; not expected)  
2019-05-29 23:27:09,470 INFO success: createdb2 entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-29 23:27:09,472 INFO spawned: ‘createdb3’ with pid 8123

Can anyone help me to mount the volumes and run the PMM?

Many thanks

Regars!

---

<div class="post-metadata">

**Author:** ![rpedrero](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rpedrero](https://forums.percona.com/u/rpedrero)\
**Post date:** [May 30, 2019, 2:05am UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/3 "2019-05-30T02:05:18Z")

</div>

I do a dummy container with the mapped volumes to the /data

docker create  
-v /data/prometheus/data:/opt/prometheus/data  
-v /data/consul-data:/opt/consul-data  
-v /data/mysql:/var/lib/mysql  
-v /data/grafana:/var/lib/grafana  
–name pmm-data percona/pmm-server /bin/true

And then execute:

docker run -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always percona/pmm-server

Also I tried as docker-compose.yml with the next configuration:

services:  
percona:  
image: percona/pmm-server  
restart: always  
ports:

- 80:80  
volumes:
- /data/prometheus/data:/opt/prometheus/data
- /data/consul-data:/opt/consul-data
- /data/mysql:/var/lib/mysql
- /data/grafana:/var/lib/grafana

But both configs doesn’t work.

The logs shows:

2019-05-30 07:33:07,541 INFO spawned: ‘dashboard-upgrade’ with pid 12318  
2019-05-30 07:33:07,543 INFO success: dashboard-upgrade entered RUNNING state, process has stayed up for \> than 0 seconds (startsecs)  
2019-05-30 07:33:07,544 INFO exited: grafana (exit status 1; not expected)  
2019-05-30 07:33:08,012 INFO exited: createdb (exit status 1; not expected)  
2019-05-30 07:33:09,016 INFO spawned: ‘createdb’ with pid 12326  
2019-05-30 07:33:09,223 INFO exited: qan-api (exit status 1; not expected)  
2019-05-30 07:33:10,227 INFO spawned: ‘qan-api’ with pid 12335  
2019-05-30 07:33:10,228 INFO success: createdb entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:10,334 INFO exited: createdb2 (exit status 1; not expected)  
2019-05-30 07:33:11,336 INFO success: qan-api entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:11,339 INFO spawned: ‘createdb2’ with pid 12339  
2019-05-30 07:33:11,342 INFO spawned: ‘pmm-managed’ with pid 12340  
2019-05-30 07:33:11,373 INFO exited: pmm-managed (exit status 2; not expected)  
2019-05-30 07:33:11,430 INFO exited: createdb3 (exit status 1; not expected)  
2019-05-30 07:33:12,432 INFO success: createdb2 entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:12,434 INFO spawned: ‘createdb3’ with pid 12351  
2019-05-30 07:33:12,869 INFO spawned: ‘grafana’ with pid 12354  
2019-05-30 07:33:12,912 INFO exited: grafana (exit status 1; not expected)  
2019-05-30 07:33:13,914 INFO success: createdb3 entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:13,944 INFO exited: dashboard-upgrade (exit status 1; not expected)  
2019-05-30 07:33:14,108 INFO spawned: ‘dashboard-upgrade’ with pid 12361  
2019-05-30 07:33:14,110 INFO success: dashboard-upgrade entered RUNNING state, process has stayed up for \> than 0 seconds (startsecs)  
2019-05-30 07:33:14,111 INFO exited: createdb (exit status 1; not expected)  
2019-05-30 07:33:14,315 INFO spawned: ‘createdb’ with pid 12367  
2019-05-30 07:33:15,244 INFO exited: qan-api (exit status 1; not expected)  
2019-05-30 07:33:16,248 INFO spawned: ‘qan-api’ with pid 12376  
2019-05-30 07:33:16,249 INFO success: createdb entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:16,361 INFO exited: createdb2 (exit status 1; not expected)  
2019-05-30 07:33:17,363 INFO success: qan-api entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:17,365 INFO spawned: ‘createdb2’ with pid 12380  
2019-05-30 07:33:17,447 INFO exited: createdb3 (exit status 1; not expected)  
2019-05-30 07:33:18,449 INFO success: createdb2 entered RUNNING state, process has stayed up for \> than 1 seconds (startsecs)  
2019-05-30 07:33:18,450 INFO spawned: ‘createdb3’ with pid 12384  
2019-05-30 07:33:19,342 INFO exited: createdb (exit status 1; not expected)  
2019-05-30 07:33:19,441 INFO spawned: ‘createdb’ with pid 12389  
2019-05-30 07:33:19,453 INFO spawned: ‘grafana’ with pid 12390

And the /data files:

root@perconamm:/data# ls -la \*  
consul-data:  
total 8  
drwxr-xr-x 2 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …

grafana:  
total 12  
drwxr-xr-x 3 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …  
-rw-r–r-- 1 root root 0 May 29 23:04 grafana.db  
drwxr-xr-x 3 root root 4096 May 30 07:31 plugins

mysql:  
total 8  
drwxr-xr-x 2 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …

prometheus:  
total 12  
drwxr-xr-x 3 root root 4096 May 29 23:04 .  
drwxrwxrwx 6 root root 4096 May 29 23:04 …  
drwxr-xr-x 2 root root 4096 May 29 23:04 data  
root@perconamm:/data#

If I run the container without volumes, work correctly.

Can anyone help me?

Many thanks

---

<div class="post-metadata">

**Author:** ![rpedrero](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rpedrero](https://forums.percona.com/u/rpedrero)\
**Post date:** [June 11, 2019, 4:47am UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/4 "2019-06-11T04:47:57Z")

</div>

Sorry for the duplicated messages, when I post, i didn’t she the post and I thing something was wrong.

---

<div class="post-metadata">

**Author:** ![lduriez](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.percona.com/lduriez/32/60_2.png) [@lduriez](https://forums.percona.com/u/lduriez)\
**Post date:** [June 14, 2019, 6:14am UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/5 "2019-06-14T06:14:47Z")

</div>

Hello,

I managed to do what you want, doing it this way :

mkdir -p /usr/local/pmm/opt/prometheus/data  
mkdir -p /usr/local/pmm/opt/consul-data  
mkdir -p /usr/local/pmm/var/lib/mysql  
mkdir -p /usr/local/pmm/var/lib/grafana  
docker run -d -p 8080:443 -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql -v /var/lib/grafana -e ORCHESTRATOR\_ENABLED=true -e ORCHESTRATOR\_USER=\*\*\* -e ORCHESTRATOR\_PASSWORD=\*\*\* --name pmm-server --restart always percona/pmm-server  
docker cp pmm-server:/opt/prometheus/data /usr/local/pmm/opt/prometheus/  
docker cp pmm-server:/opt/consul-data /usr/local/pmm/opt/  
docker cp pmm-server:/var/lib/mysql /usr/local/pmm/var/lib/  
docker cp pmm-server:/var/lib/grafana /usr/local/pmm/var/lib/  
docker stop  
docker rm pmm-server  
docker run -d -p 8080:443 -v /usr/local/pmm/opt/prometheus/data:/opt/prometheus/data -v /usr/local/pmm/opt/consul-data:/opt/consul-data -v /usr/local/pmm/var/lib/mysql:/var/lib/mysql -v /usr/local/pmm/var/lib/grafana:/var/lib/grafana -e ORCHESTRATOR\_ENABLED=true -e ORCHESTRATOR\_USER=\*\*\* -e ORCHESTRATOR\_PASSWORD=\*\*\* --name pmm-server --restart always percona/pmm-server

I think to docker need to initialize some files first and that’s why we can’t expose the volumes for the first run.

---

<div class="post-metadata">

**Author:** ![rpedrero](https://avatars.discourse-cdn.com/v4/letter/r/57b2e6/32.png) [@rpedrero](https://forums.percona.com/u/rpedrero)\
**Post date:** [June 17, 2019, 10:17am UTC](https://forums.percona.com/t/running-server-with-docker-custom-volumes/7040/6 "2019-06-17T10:17:59Z")

</div>

> [@lduriez;54184](#):
>
> Hello,
> 
> I managed to do what you want, doing it this way :
> 
> mkdir -p /usr/local/pmm/opt/prometheus/data  
> mkdir -p /usr/local/pmm/opt/consul-data  
> mkdir -p /usr/local/pmm/var/lib/mysql  
> mkdir -p /usr/local/pmm/var/lib/grafana  
> docker run -d -p 8080:443 -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql -v /var/lib/grafana -e ORCHESTRATOR\_ENABLED=true -e ORCHESTRATOR\_USER=\*\*\* -e ORCHESTRATOR\_PASSWORD=\*\*\* --name pmm-server --restart always percona/pmm-server  
> docker cp pmm-server:/opt/prometheus/data /usr/local/pmm/opt/prometheus/  
> docker cp pmm-server:/opt/consul-data /usr/local/pmm/opt/  
> docker cp pmm-server:/var/lib/mysql /usr/local/pmm/var/lib/  
> docker cp pmm-server:/var/lib/grafana /usr/local/pmm/var/lib/  
> docker stop  
> docker rm pmm-server  
> docker run -d -p 8080:443 -v /usr/local/pmm/opt/prometheus/data:/opt/prometheus/data -v /usr/local/pmm/opt/consul-data:/opt/consul-data -v /usr/local/pmm/var/lib/mysql:/var/lib/mysql -v /usr/local/pmm/var/lib/grafana:/var/lib/grafana -e ORCHESTRATOR\_ENABLED=true -e ORCHESTRATOR\_USER=\*\*\* -e ORCHESTRATOR\_PASSWORD=\*\*\* --name pmm-server --restart always percona/pmm-server
> 
> I think to docker need to initialize some files first and that’s why we can’t expose the volumes for the first run.

Many thanks!  
That works for me 🙂
