Using SiteDrive & Docker
Docker can help maintaining multiple servers in a local environment a breeze. It can also help with testing your custom SiteDrive integration. Having said that, there are a few pitfalls to keep in mind. Let's take the following docker-compose file as our example.
version: "3"
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- ./mysql:/var/lib/mysql
- ./mysql-log:/var/log/mysql
#- ./config/mariadb.cnf:/etc/mysql/mariadb.cnf
#restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
ports:
- 3307:3306
expose:
- 3307
- 33070
wordpress:
hostname: wplocal
image: wordpress:latest
ports:
- 8091:80
#restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
- ./wordpress:/var/www/html
db_client:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- ./mysql-client:/var/lib/mysql
- ./mysql-client-log:/var/log/mysql
#- ./config/mariadb.cnf:/etc/mysql/mariadb.cnf
#restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
ports:
- 3308:3306
expose:
- 3308
- 33080
wordpress_client:
hostname: wplocal
image: wordpress:latest
ports:
- 8092:80
#restart: always
environment:
- WORDPRESS_DB_HOST=db_client
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
- ./wordpress-client:/var/www/html
This docker-compose setup has two main servers. wordpress and wordpress_client . They are both on the same docker network. We have exposed both sites to our 8081 port and 8082 port respectively.
SiteDrive works by having the servers themselves connect to each other. While you are able to reach http://localhost:8081 that does not mean your docker containers can. They are exposed to each other via their names.
So when we are on wordpress_client and we want to connect to the wordpress container. We will use http://wordpress as the URL for the drive connection settings.
