Docker 上的 WordPress [2]

01.31.2019, WordPress, by .

上一篇安装好了 Docker,现在直接用 docker-compose 来搭建环境了。

docker-compose 的配置就是通过名字为 docker-compose.yml 的文本文件,在目录里面建立个 名字为 “docker-compose.yml” 的文件,然后用命令:docker-compose up,就可以启动容器运行环境了。关掉容器用 docker-compose stop,删除用 docker-compose rm, 不过一般都不用删除。除非自己搞坏容器了才会删除,重新启动一下就重建了。

建立了配置文件就往里面填充内容了。建立之前还是推荐浏览一下 Docker 官方的配置文件说明文档,只不过是英文的。可以结合翻译工具来阅读。

简单来说就分为几个部分:文档版本声明、服务配置、端口映射和目录映射、服务配置 这几个部分。不过可以直接自己构建 docker 镜像。虽然现在很多人都按自己习惯来的 docker 镜像越来越多了,但是还是建议直接使用官方通过的 docker 镜像好了,这样方便的和安全的多。至少那些给黑客留好的后门不是在 docker镜像里面。

这里我直接给个完整的 docker-compose.yml 的内容作为例子好了。

version: '3.1'
services:
  wordpress:
    image: wordpress:5.0.3-php7.3-apache
    restart: always
    ports:
      - 80:80
    volumes:
      - ./wordpress:/var/www/html:rw
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: 数据库名称
      WORDPRESS_DB_USER: 数据库用户名
      WORDPRESS_DB_PASSWORD: 数据库密码
      WORDPRESS_TABLE_PREFIX: 表头

db:
  image: mysql:8.0
    restart: always
    ports:
      - '3306:3306'
    volumes:
      - ./data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: 数据库名称
      MYSQL_USER: 数据库用户名
      MYSQL_PASSWORD: 数据库密码
      MYSQL_ROOT_PASSWORD: 数据库的ROOT密码

这个例子可以看出 yml 的结构是这样的:

version: 版本
services: 服务
  容器1:
    容器1的配置
  容器2:
    容器2端配置

然后我来说几个要注意的地方
1.version: 指是这个 yml 文件的版本,有的 linux 发行版的 docker-compose 需要改成 2.0 才能执行。比如腾讯云的某些版本。这个和 docker-ce 的版本有关系的。如果你用新版的docker 的话 还是 3.0 以上吧。
2. 每行的缩进必须用空格。不能用 tab 键,否则不能执行。
3. ports: 是对外映射的端口。因为 docker 每个容器运行的时候都在docker 建立的专用内网里面。所以需要端口映射后,才能访问。
4. volumes: 是本地文件的挂载位置。类似 linux 的 mount 命令。让容器可以访问本地文件用的。

缩进的空格可以按自己习惯2个或者4个,都可以。如果不想暴露端口可以不映射出来。让其直接内部访问更安全。不过这得直都是默认端口号才行。头几天测试的时候用了别人所谓的 mysql优化版的 docker 镜像,结果那人编译的时候按他的习惯把端口改了。我以为出问题了。后来查了一下才发现的。坑人啊。

上面例子的 db 容器,如果mysql 不需要 远程访问管理这些,可以直接删掉端口那段,这样隐藏了。外边扫描的时候就只看到一个公开的 80端口了。和直接安装 apache 或nginx 的服务器来说相对安全很多。不过如果你服务器的 root 密码泄露出去了那就什么都不安全了。哈哈。如果要再安全点。那就为 docker 配置个专用的运行账号,而不是默认的 root 用户和权限。

配置好了后,在docker-compose.yml  所在目录里面建立用来保存 WordPress 程序的 wordpress 目录,一个用来保存数据库的 data 目录。当然也不用按我这个例子的名字来。第一次启动的时候  docker-compose 会判断是否有这个两个目录的。

特注意的一点就是用 docker-compose up -d 或者 docker-compose up 启动了后,就不能随意编辑 docker-compose.yml 了。否则会造成 docker 出现一些无非停止的损坏的容器。这样就需要这两个命令来关闭全部运行的docker 容器了。

所以你需要记住下面这几个命令:

$ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID

$ docker ps -a // 查看所有容器
$ docker ps -a -q // 查看所有容器ID

$ docker stop $(docker ps -a -q) // stop停止所有容器
$ docker rm $(docker ps -a -q) // remove删除所有容器

好了。docker 的东西基本差不多了。也许下次继续这个话题了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据