Fórum Root.cz
Hlavní témata => Server => Téma založeno: petr.parolek 16. 07. 2017, 22:14:06
-
Ahoj, dá se nějak zrychlit běh PHP aplikace v Dockeru na pc prosím? Ve Vagrantu mi vše běželo mnohem rychleji - hostitel windows, host Linux přes NFS. Teď chci rozjet vývoj v dockeru pod nativním windows a zaskočila mě mnohem vyšší php execute time
Díky za pomoc.
-
Nevim jak na widlich, asi pred 10lety jsem nastesti utekl, ale na Macu jsme to resili dost a reseni bylo tady: https://docs.docker.com/docker-for-mac/osxfs-caching/
-
Ano da a celkom jednoducho. Zakladny problem je, ze pravdepodobne pouzivas volume na celu appku. To co sposobuje spomalenie, ze v tom volume je zahrnuty aj adresar vendor s tisicami malych suborov.
Jednoducho presun vendor o uroven vyssie, tak aby nebol vo volume. Vznikne drobna komplikacia - prikaz composer install teraz musis spustit v kontajneri, vzdy ked pridas/odoberes/updatujes nejaku libku. Za desat-nasobne zrychlenie ro ale stoji.
-
Ano, používám volume na celý projekt viz docker-compose.yml:
version: '2'
services:
apache:
image: dockette/devstack:apache
networks:
default:
ipv4_address: 172.10.10.5
volumes_from:
- data
ports:
- 80:80
- 443:443
links:
- php7:php
- php7:php7
- php56:php56
php7:
image: dockette/devstack:php71-fpm
networks:
default:
ipv4_address: 172.10.10.10
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes_from:
- data
- userdirs
links:
- mariadb:mysql
- postgresql:postgresql
php56:
image: dockette/devstack:php56-fpm
networks:
default:
ipv4_address: 172.10.10.11
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes_from:
- data
- userdirs
links:
- mariadb:mysql
- postgresql:postgresql
nodejs:
image: dockette/devstack:nodejs
networks:
default:
ipv4_address: 172.10.10.12
# Keep this service alive
tty: true
stdin_open: true
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes_from:
- data
- userdirs
links:
- mariadb:mysql
- postgresql:postgresql
adminer:
image: dockette/adminer:dg
networks:
default:
ipv4_address: 172.10.10.13
ports:
- 8000
links:
- mariadb:mysql
- postgresql:postgresql
mariadb:
image: mariadb:10.1
networks:
default:
ipv4_address: 172.10.10.20
ports:
- 3306:3306
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
# Change in your devstack!
- MYSQL_ROOT_PASSWORD=root
postgresql:
image: postgres:9.6
networks:
default:
ipv4_address: 172.10.10.21
ports:
- 5432:5432
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
# Change in your devstack!
- POSTGRES_PASSWORD=root
data:
image: busybox
volumes:
# Data homeland
- ~/projects:/srv
userdirs:
image: busybox
volumes:
# It's root's home folder.
# You can store here .npm, .composer cache etc.
- ./data/root-dir:/root
# It's dfx's home folder.
# You can store here .npm, .composer cache etc.
- ./data/petr-dir:/home/petr
# Propagate SSH agent to containers
- $SSH_AUTH_SOCK:/ssh-agent
networks:
default:
driver: bridge
ipam:
driver: default
config:
# This is useful for PHP xdebug debugging
- subnet: 172.10.10.0/24
gateway: 172.10.10.1
S Dockerem začínám. Jak mám vyndat složku vendor z volume prosím? Používám Nette FW.
-
+ pouzi host network, bridge je notoricky pomaly kedze je to routovanie v user space
-
díky.