带有mysql的wordpress镜像
大约 2 分钟
带有mysql的wordpress镜像
1. 编写Apache启动程序
<VirtualHost *:80>
DocumentRoot /usr/src/wordpress
<Directory /usr/src/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
DirectoryIndex index.php index.html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
将文件保存,命名为
000-default.conf
2. 编写MySQL启动程序
#!/bin/bash
set -e
# 启动MySQL服务
mysqld_safe &
# 等待MySQL服务启动
while ! mysqladmin ping --silent; do
sleep 1
done
# 创建WordPress数据库和用户
mysql -uroot -e "CREATE DATABASE IF NOT EXISTS wordpress;"
mysql -uroot -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';"
mysql -uroot -e "FLUSH PRIVILEGES;"
将文件保存,命名为
init-db.sh
3. 编写服务自启动程序
#!/bin/bash
set -e
# 启动MySQL服务
mysqld_safe &
# 初始化数据库
bash /docker-entrypoint-initdb.d/init-db.sh
# 启动WordPress服务
apache2-foreground
将文件保存,命名为
start.sh
4. 编写 Dockerfile
# 海外服务器可直接使用dockerHub官方源
# FROM wordpress:latest
# 国内服务器可使用 AtomHub 提供的源
FROM atomhub.openatom.cn/amd64/wordpress
# 安装必要的软件包和MySQL服务
RUN apt-get update && apt-get install -y \
gnupg \
default-mysql-server \
&& rm -rf /var/lib/apt/lists/*
# 复制初始化脚本到容器中
COPY init-db.sh /docker-entrypoint-initdb.d/
COPY start.sh /start.sh
# 设置启动脚本的执行权限
RUN chmod +x /start.sh /docker-entrypoint-initdb.d/init-db.sh
# 复制Apache配置文件到容器中
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
# 启用Apache配置
RUN a2ensite 000-default.conf
RUN a2enmod rewrite
# 暴露必要的端口
EXPOSE 80
# 使用启动脚本作为容器启动命令
CMD ["/start.sh"]
将文件保存,命名为
dockerfile
5. 构建 Docker 镜像
在终端中导航到包含 Dockerfile 的目录,然后运行以下命令构建 Docker 镜像:
docker build -t my-wordpress-mysql-image .
其中 my-wordpress-mysql-image
是镜像的名称,你可以根据需要进行修改。构建过程完成后,你可以使用以下命令查看镜像列表:
docker images
6. 运行测试 Docker 容器
使用构建好的镜像运行一个 Docker 容器:
docker run -d -p 80:80 my-wordpress-mysql-image
7. 访问 wordpress 服务
打开浏览器访问主机ip,若能够正常访问,则说明wordpress服务启动成功。