我正在尝试了解或查找有关如何将新 Wordpress 容器连接到现有 MariaDB 容器的信息。我错过了一些东西。我可以在创建 MariaDB 容器的同时添加一个 Wordpress 实例。见下文。
services:
wordpress:
image: wordpress
restart: always
ports:
- 8282:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./:/var/www/html
links:
- db:db
db:
image: mariadb:latest
restart: always
container_name: mariadb
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_ROOT_PASSWORD: password
volumes:
- db:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
container_name: phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: mariadb
volumes:
wordpress:
db:
phpmyadmin:```
After that has spun up and is good to go, I then attempt another docker-compose.yml (see below) and I cannot get the Wordpress instance to connect to the SQL instance.
```version: '3.7'
services:
wordpress:
image: wordpress
restart: always
container_name: wordup
ports:
- 8283:80
environment:
WORDPRESS_DB_HOST: 172.20.0.3
WORDPRESS_DB_USER: username
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wp2
volumes:
- ./:/var/www/html
volumes:
wp2:
如何将新的 WP 实例指向我在 MariaDB 容器上创建的数据库?是否可以在不重新创建新数据库的情况下将新的 Docker Compose 堆栈指向已创建的数据库?我知道在不同的应用程序之间共享数据库并不是一个好主意,但我需要将数据从一个 Wordpress 站点提取到另一个站点。
谢谢!
答案 0 :(得分:0)
您可以使用 Docker 网络。您需要将两个 docker-compose 文件连接到同一个网络,并且在该网络内的容器可以通过容器名称相互引用。
以下是文档中有关 docker-compose 网络的更多信息:https://docs.docker.com/compose/networking/#specify-custom-networks
看一个例子,其中两个 Nginx 代理开始使用不同的 docker-compose 文件。第一个代理重定向到第二个代理,然后将我们重定向到 google.com
。
第一个代理docker-compose.yml
version: "3.9"
services:
first:
build: .
ports:
- "8081:80"
networks:
- "test-network"
networks:
test-network:
name: "test-network"
driver: "bridge"
第一个代理ngnix.conf
events {}
http {
server {
location / {
proxy_pass http://second:80; # in second docker-compose file we're setting container_name to "second", thus we can reference second container by this name
}
}
}
第二个代理docker-compose.yml
:
version: "3.9"
services:
second:
container_name: "second" # note, that we don't need to expose ports because we don't need to make this service visible to a host. But it's not restricted to expose ports. You can do so if you need.
build: .
networks:
- "test-network"
networks:
test-network:
name: "test-network"
driver: "bridge"
第二个代理ngnix.conf
:
events {}
http {
server {
location / {
proxy_pass https://google.com;
}
}
}