【发布时间】:2022-12-30 06:00:03
【问题描述】:
使用 docker,我能够在几乎每个平台上为 docker-compose 运行WordPress example,而无需预先了解 docker。
我正在寻找一种方法来实现与Podman 相同的效果。
在我的例子中,有一个快速的跨平台方式来设置一个工作的 WordPress 安装以进行开发。
由于 Podman 年轻得多,因此 2022 年的有效答案也将是:这是不可能的,因为... / 只有在提供约束 X 的情况下才有可能。
我仍然想为将来遇到同样问题的其他人创建一个切入点。
我在下面发布了自己的努力。在我花更多时间调试许多小的(但仍然可以解决的)问题之前,我想看看其他人是否遇到过同样的问题并且已经有了解决方案。如果你有,请清楚地记录它的限制。
我的具体问题,仅供参考
- 我在 Ubuntu 20.04 上,
podman -v给出了 3.4.2。 - 当我在 docker 的 WordPress
.yml文件上使用docker-compose up和 Podman back-end 时,我遇到了“重复安装目标”issue。 -
podman-compose是 Podman 4.1.0 的一部分,在我写这篇文章时它在 Ubuntu 上是 not available。 -
example of Red Hat 给出“建立数据库连接时出错...无法建立与位于
mysql的数据库服务器的联系”。 - A solution 以上对我不起作用。分享很可能是错字。我试着用取消分享.
- 我找到了一个example,它使用 pod 而不是 docker-compose.yml 文件。但它是为 Cent OS 编写的。
- 我修改了 Cent OS 示例,请参阅下面的脚本。我让容器启动并运行。但是,WordPress 无法连接到数据库。
# Set environment variables:
DB_NAME='wordpress_db'
DB_PASS='mysupersecurepass'
DB_USER='justbeauniqueuser'
POD_NAME='wordpress_with_mariadb'
CONTAINER_NAME_DB='wordpress_db'
CONTAINER_NAME_WP='wordpress'
mkdir -P html
mkdir -P database
# Remove previous attempts
sudo podman pod rm -f $POD_NAME
# Pull before run, bc: invalid reference format eror
sudo podman pull mariadb:latest
sudo podman pull wordpress
# Create a pod instead of --link. So both containers are able to reach each others.
sudo podman pod create -n $POD_NAME -p 80:80
sudo podman run --detach --pod $POD_NAME \
-e MYSQL_ROOT_PASSWORD=$DB_PASS \
-e MYSQL_PASSWORD=$DB_PASS \
-e MYSQL_DATABASE=$DB_NAME \
-e MYSQL_USER=$DB_USER \
--name $CONTAINER_NAME_DB -v "$PWD/database":/var/lib/mysql docker.io/mariadb:latest
sudo podman run --detach --pod $POD_NAME \
-e WORDPRESS_DB_HOST=127.0.0.1:3306 \
-e WORDPRESS_DB_NAME=$DB_NAME \
-e WORDPRESS_DB_USER=$DB_USER \
-e WORDPRESS_DB_PASSWORD=$DB_PASS \
--name $CONTAINER_NAME_WP -v "$PWD/html":/var/www/html docker.io/wordpress
另外,我有点不确定在哪里发布这个问题。如果服务器故障或其他堆栈交换更合适,我会很乐意在那里发布。
【问题讨论】:
-
我试过结合docker.io/library/wordpress和docker.io/library/mariadb.好像是work。接下来我想尝试的是梳理docker.io/bitnami/mariadb使用基于 fedora 的 wordpress,同时使用
--user nonrootuser和 socket activation 运行。 (我可能需要一段时间才能找到时间)