这是我第一次尝试使用centos。
我能够成功地开发具有自定义主题的本地WordPress网站,现在我试图将其部署到Vultr上的CentOS服务器上。我的docker-compose.yml
看起来像这样:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:5.2.2-php7.1-apache
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
working_dir: /var/www/html
volumes:
- ./wp-content:/var/www/html/wp-content
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data: {}
我应该如何配置图像?我应该为WordPress,MySQL和WP-Content&创建三个图像。uploads.ini在Docker-Compose中引用它们?还是我只能制作所有图像?
首先,通常建议您使用每个容器使用一项服务分开关注的区域。因此,对于wordpress, mysql etc
,最好使用多个服务。
但是,这些服务使用一个图像或多个图像,完全取决于您的场景。
实际上,您可以将所有内容放在一个自己的图像中,并在图像中指定不同的Docker-Compose服务的不同命令。例如
services:
db:
image: your_own_solo_image
command: the command to start db
wordpress:
image: your_own_solo_image
command: the command to start wordpress
depends_on:
- db
使用一个图像的缺点:
也许一个容器只需要小的基本图像,例如Alpine,另一个容器需要Ubuntu,但是使用Unify图像(例如Ubuntu(,当两个容器运行时,它都将使用Ubuntu,也许还有更多的内存浪费,因为Ubuntu与Alpine相比会消耗更多的资源。
您可能会遇到图书馆冲突,例如Container1(Service1(需要
lib.so.1
,而Container2(Service2(可能需要lib.so.2
,您可能必须自己处理LD_LIBRARY_PATH
。如果您将图像分开,请在此处没有问题。
使用一个图像的优势:
- 有时您可能需要将服务(命令(分开到不同的容器,但是这两个命令确实非常依赖一个自己的项目的相同源代码,并且环境都是相同的,那么无需为不同的容器使用不同的图像(撰写不同的服务(。一个示例是Django项目,您可以在一项服务中启动WSGI,但也可能想在另一个服务中启动芹菜工人,但仍然使用Django项目的相同代码。