使用Docker的多个WordPress网站与一个共享数据库
我想用docker运行一个共享数据库的多个WordPress网站。
是否可以指定一个数据库,并设置一个适当的卷到一个特定的SQL文件,以初始化每个容器在其docker-compose.yml
文件中的WordPress?
例如,我有一个共享容器siteA和docker-compose.yml
三个docker-compose.yml
文件。
当我在./shared
运行./shared
docker-compose up
,会为两个站点(example_a和example_b)创build两个DB。
当我在./siteA
运行./siteA
docker-compose up
,我想将当前数据库更改为example_a
,并使用./siteA/mysql/setup.sql中的sql进行一定数量的数据初始化该站点。
siteB也一样。
我知道我可以在- WORDPRESS_DB_NAME: example_a
- ./db-data/mysql.dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
中的mysql部分中指定数据库和卷,如- WORDPRESS_DB_NAME: example_a
和- ./db-data/mysql.dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
,但是我只有一个共享的mysql,不能为每个站点指定数据库和卷。
我有多个docker-compose.yml
文件看起来像下面。
./shared/docker-compose.yml
version: "2" services: proxy: image: jwilder/nginx-proxy privileged: true container_name: proxy ports: - 80:80 - 443:443 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./certs:/etc/nginx/certs:ro restart: always logging: options: max-size: 5m max-file: "10" mysql: image: mysql:5.7 container_name: mysql command: > --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --max-allowed-packet=128M ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=foobar restart: always volumes: - db-data:/var/lib/mysql - ./mysql/sql-setup.sql:/docker-entrypoint-initdb.d/sql-setup.sql # to create multiple databases (eg example_a, example_b) logging: options: max-size: 5m max-file: "10" volumes: db-data: driver: local networks: default: external: name: shared
./siteA/docker-compose.yml
version: "2" services: example_a_wordpress: image: wordpress container_name: a.example environment: WORDPRESS_DB_NAME=example_a WORDPRESS_DB_PASSWORD=foobar VIRTUAL_HOST: a.example.dev external_links: - mysql restart: always volumes: - ./dist/theme:/var/www/html/wp-content/themes/main - ./dist/assets:/var/www/html/assets logging: options: max-size: 5m max-file: "10" networks: default: external: name: shared
./siteB/docker-compose.yml
version: "2" services: example_b_wordpress: image: wordpress container_name: b.example environment: WORDPRESS_DB_NAME=example_b WORDPRESS_DB_PASSWORD=foobar VIRTUAL_HOST: b.example.dev external_links: - mysql restart: always volumes: - ./dist/theme:/var/www/html/wp-content/themes/main - ./dist/assets:/var/www/html/assets logging: options: max-size: 5m max-file: "10" networks: default: external: name: shared