Ján Bočínec
Entrepreneur and inglourious basterd
@johnnypea
Webové riešenia na mieru
WordPress pluginy a témy
@webikon
@wpsk
docker run...
docker run --name some-wordpress \
--link some-mariadb:mysql -p 8080:80 -d wordpress
docker run --name some-mariadb \
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb
docker-compose
version: "2"
services:
database:
image: mariadb
ports:
- "3333:3306"
environment:
MYSQL_ROOT_PASSWORD: TajneHeslo123
wordpress:
image: wordpress
volumes:
- .:/var/www/html
ports:
- "8080:80"
links:
- database:mysql
environment:
WORDPRESS_DB_PASSWORD: TajneHeslo123
docker-compose.yml
$ docker-compose up -d
http://localhost:8080
-d
Detached mode: Run containers in the background, print new container names.
volumes:
- "/local/path:/container/path"
ports:
- "8080:80"
links:
- wordpress
chown -R 33:33 sites
"www-data"
https://hub.docker.com/_/mariadb/
#!/usr/bin/env bash
docker-compose run --rm \
database \
mysqldump -h mysql -u root -proot wp-db > wp-db.sql
https://hub.docker.com/_/wordpress
Development
├── docker-compose.yml
├── sites
│ ├── project-1
│ ├── project-2
│ ├── project-3
│ ├── project-4
│ └── project-5
└── tools
├── build
├── cli
├── deploy
├── develop
└── test
wordpress:
image: wordpress
volumes:
- './sites/${PROJECT}:/var/www/html'
ports:
- "8080:80"
links:
- database:mysql
environment:
WORDPRESS_DB_PASSWORD: TajneHeslo123
docker-compose.yml
#!/usr/bin/env bash
export PROJECT=project-X
docker-compose -p "$PROJECT" up -d
-p, --project-name NAME Specify an alternate project name (default: directory name)
cli:
image: webikon/wp-cli
volumes:
- './sites/${PROJECT}:/var/www/html'
links:
- database:mysql
depends_on:
- wordpress
docker-compose.yml
if [ $# -gt 2 ];then
export PROJECT="$1"
if [ "$2" == "wp" ]; then
shift 1
docker-compose -p "$PROJECT" run --rm \
-w /var/www/html \
cli \
$@
fi
fi
./tools/cli
test:
image: codeception/codeception
volumes:
- ./sites/${PROJECT}:/src
- ./sites/${PROJECT}/tests:/project/tests
- ./sites/${PROJECT}/codeception.yml:/project/codeception.yml
- ./sites/${PROJECT}/vendor:/project/vendor
docker-compose.yml
#!/usr/bin/env bash
if [ $# -gt 0 ];then
export PROJECT="$1"
if [ "$2" == "codecept" ]; then
shift 2
docker-compose -p "$PROJECT" run --rm \
test \
$@
fi
fi
./tools/test
./tools/test project-X codecept run acceptance
https://github.com/SeleniumHQ/docker-selenium
selenium/hub
selenium/standalone-chrome
selenium/standalone-firefox
chrome:
image: selenium/standalone-chrome
ports:
"4444:4444"
docker-compose.yml
class_name: AcceptanceTester
modules:
enabled:
- \Helper\Acceptance
- WPWebDriver
config:
WPWebDriver:
host: chrome
url: 'http://wordpress'
browser: chrome
port: 4444
window_size: '1024x768'
adminUsername: 'admin'
adminPassword: 'admin'
adminPath: '/wp-admin'
acceptance.suite.yml
https://github.com/lucatume/wp-browser
Celé jadro bez potreby webserveru.
Prístup k nástroju wp-cli v akceptačných a funkčných testoch.
+
Ďalsie nástroje na prácu s databázou:
./tools/test project-X
codecept run --html report-web.html web & \
./tools/test project-X
codecept run --html report-unit.html unit & \
./tools/test project-X
codecept run --html report-functional.html functional
http://codeception.com/docs/12-ParallelExecution#Robo
jenkins:
image: jenkins
ports:
- "8080:8080"
- "50000:50000"
docker-compose.yml
https://hub.docker.com/
FROM wordpress:4.7-apache
RUN curl -O https://url-to-wp-cli/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp
RUN wp core config
--dbname=wp --dbuser=wp --dbpass=securepswd --locale=sk_SK
RUN wp core install
--url=example.com --title=Example --admin_user=admin
--admin_password=admin --admin_email=info@example.com
CI a CD
meetup.com/WordPress-Brno-Meetups
By Ján Bočínec