Cześć!
Mam lokalne środowisko w którym uruchamiam w kontenerach WordPressa, bazę i inne wspierające narzędzia.
version: '3.1'
services:
wordpress:
image: wordpress:latest
container_name: wrotkaweb_wordpress
#command: pecl install -o -f redis && rm -rf /tmp/pear && docker-php-ext-enable redis
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: <tajne hasło>
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wordpress_data:/var/www/html
- ./wp_content:/var/www/html/wp-content
networks:
- wrotkaweb
db:
image: mariadb:latest
container_name: wrotkaweb_db
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: <tajne hasło>
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db_data:/var/lib/mysql
networks:
- wrotkaweb
redis:
image: redis:latest
container_name: wrotkaweb_redis
networks:
- wrotkaweb
ports:
- "6379:6379"
nginx:
image: nginx:latest
container_name: wrotkaweb_nginx
volumes:
- ./nginx-conf/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
depends_on:
- wordpress
- varnish
networks:
- wrotkaweb
varnish:
image: varnish:latest
container_name: wrotkaweb_varnish
ports:
- "6081:6081"
depends_on:
- wordpress
networks:
- wrotkaweb
volumes:
- ./varnish-conf/default.vcl:/etc/varnish/default.vcl
networks:
wrotkaweb:
driver: bridge
volumes:
wordpress_data:
driver: local
wp_content:
driver: local
db_data:
driver: local
Na lokalnym środowisku wszystko działa jak trzeba. Powołuję kontenery do życia wydając polecenie docker compose -f docker-compose.yml up
.
Cały katalog .
utrzymuję w repozytorium (Git). Jeżeli więc modyfikuję sam plik docker-compose.yml
czy pliki szablonów WordPressa korzystam z standardowego mechanizmu git add, git commit, git push. W repozytorium nie utrzymuję jedynie katalogu ./db_data
.
Przy takiej konfiguracji teoretycznie więc wystarczyłoby żebym na środowisku docelowym wykonał git pull
z repo, uruchomił docker compose [...]
i tyle wystarczy do przeniesienia aplikacji na środowisko produkcyjne. Oczywiście pomijam na razie kwestię automatyzacji tego procesu czy też konieczności dostosowania danych w bazie (wordpress site_url i home).
Pytanie czy takie podejście jest zgodne ze sztuką?
Drugie pytanie brzmi jak w takim układzie poradzić sobie z przeniesieniem bazy na prod? Teoretycznie pliki z volume ./db_data:/var/lib/mysql
też mogą siedzieć w repo, ale nie brzmi to dla mnie zbyt dobrze.
Jak waszym zdaniem najlepiej to ogarnąć?
Dodatkowo byłbym też wdzięczny za podpowiedź jak najlepiej rozwiązać konieczność instalacji rozszerzenia php-redis w kontenerze wordpress tak aby zapewnić wtyczce WP Total Cache możliwość korzystania z backendu Redis.