我最近一直在使用Wordpress和Docker创建新站点,并对它的工作方式有一个合理的了解,我现在正寻求将一些已建立的站点移入Docker。
我一直在遵循本指南:
https://stephenafamo.com/blog/moving-wordpress-docker-container/
我已经进行了所有应有的设置,但是当我转到domain.com:1234时,收到错误消息“建立数据库连接时出错”。我已按照建议在wp-config.php中将“数据库主机”更改为“ mysql”,并且来自Im引入站点的所有数据库详细信息都是正确的。
我已经连接到mysql容器,并检查数据库是否在正确的用户那里,并且还通过mysql CLI确保pw正确。
SELinux设置为宽松,我没有更改任何目录/文件所有权或权限,对于后一个目录,所有755和文件644均应保留。
编辑:我应该提到数据库/数据及其下的所有内容似乎都由用户/组“ polkitd输入”而非root拥有。
当我浏览端口1234上的站点时,Docker日志并没有真正告诉我很多信息,除了WP容器的500条错误消息(尽管如此)。
这是docker-compose文件:
version: '2'
services:
example_db:
image: mysql:latest
container_name: example_db
volumes:
- ./database/data:/var/lib/mysql
- ./database/initdb.d:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123 # any random string will do
MYSQL_DATABASE: mydomin_db # the name of your mysql database
MYSQL_USER: my domain_me # the name of the database user
MYSQL_PASSWORD: password123 # the password of the mysql user
example:
depends_on:
- example_db
image: wordpress:php7.1 # we're using the image with php7.1
container_name: example
ports:
- "1234:80"
restart: always
links:
- example_db:mysql
volumes:
- ./src:/var/www/html
我非常欢迎我提出建议!
答案 0 :(得分:2)
请查看以下撰写脚本。我尝试和测试。很好。
version: '2'
services:
db:
image: mysql:latest
container_name: db_server
volumes:
- ./database/data:/var/lib/mysql
- ./database/initdb.d:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123 # any random string will do
MYSQL_DATABASE: udb_test # the name of your mysql database
MYSQL_USER: me_prname # the name of the database user
MYSQL_PASSWORD: password123 # the password of the mysql user
example:
depends_on:
- db
image: wordpress:php7.1 # we're using the image with php7.1
container_name: wp-web
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: me_prname
WORDPRESS_DB_PASSWORD: password123
WORDPRESS_DB_NAME: udb_test
ports:
- "1234:80"
restart: always
volumes:
- ./src:/var/www/html
如果您遇到其他问题,请告诉我。
答案 1 :(得分:2)
使用新版本的docker-compose,它看起来像这样(如果您不想使用PhpMyAdmin,可以将其省略):
version: '3.7'
volumes:
wp-data:
networks:
wp-back:
services:
db:
image: mysql:5.7
volumes:
- wp-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootPassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wp-user
MYSQL_PASSWORD: wp-pass
ports:
- 8889:3306
networks:
- wp-back
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: db
MYSQL_USER: wp-user
MYSQL_PASSWORD: wp-pass
MYSQL_ROOT_PASSWORD: rootPassword
ports:
- 3001:80
networks:
- wp-back
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- 8888:80
- 443:443
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp-user
WORDPRESS_DB_PASSWORD: wp-pass
volumes:
- ./wordpress-files:/var/www/html
container_name: wordpress-site
networks:
- wp-back
数据库卷是名为wp-data的卷,而wordpress html是到当前目录./wordpress-files的绑定安装。
答案 2 :(得分:1)
如果您希望将其全部保存在一个容器中,可以在此处引用此存储库, https://github.com/akshayshikre/lamp-alpine/tree/development
这里使用的是灯高山图像 然后安装mysql,php,apache2(灯栈)并复制本地wordpress demosite和db进行演示
如果您不希望任何形式的持续集成部件,请忽略.circleci文件夹 检查docker-compose文件和Dockerfile,环境变量在.env文件中
答案 3 :(得分:1)
确保 wp-config.php
文件具有与 db_user
文件中为 db_password
、docker-composer yml
定义的凭据相同的凭据。我也有类似的问题,我删除了所有文件并重新安装,看到 docker-composer up -d
将启动所有内容,但 mysql 设置的 wp-config.php
文件内容未在 docker 中定义。所以我相应地改变了它并最终开始工作
答案 4 :(得分:0)
如果您遵循本教程,https://stephenafamo.com/blog/moving-wordpress-docker-container/,则您的网站将无法正常运行。 Coz它不还原数据库,您需要使用此命令手动还原initdb.d目录中存在的.sql转储文件。
cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE
我也陷入了困境,我的CSS无法正常工作。 有什么新主意请告诉我。
答案 5 :(得分:0)
我与您分享我的方法
显示运行版本,询问是否一切正常!
$ docker --version && docker-compose --version
运行Docker Copose文件
$ docker-compose -f docker-compose.yml up -d
等你快进后
显示正在运行的容器,并且Wordpress容器的名称正在侦听端口8000
$ docker ps
如果您已按照其网站上列出的步骤操作,则会在下表中看到WordPress容器的名称,如下所示 https://hub.docker.com/_/wordpress
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxxx wordpress:latest "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:8000->80/tcp cms_wordpress_1
xxxxxxxxxxxx mysql:5.7 "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 3306/tcp, 33060/tcp cms_db_1
,如果您使用以下地址检查浏览器:localhost:8000 您将收到消息“建立数据库连接出错”
在Wordpress容器中启动bash
$ docker exec -it cms_wordpress_1 bash
由于没有连接,apt更新失败
$ apt update
打开新终端并显示当前的Firewalld配置
$ sudo cat /etc/firewalld/firewalld-workstation.conf | greb 'FirewallBackend'
currently set to 'nftables'
将值设置为“ iptables”
$ sudo sed -i 's/FirewallBackend=nftables/FirewallBackend=iptables/g' /etc/firewalld/firewalld-workstation.conf
确认新值
$ sudo cat /etc/firewalld/firewalld-workstation.conf | grep 'FirewallBackend'
重新启动Firwalld服务以应用更改
$ sudo systemctl restart firewalld.service
在浏览器中刷新正在运行的Wordpress会话,这很好。 做得好。