Я хочу имитировать сервер centos7 с помощью phpfpm, nginx, mysql в Docker для Mac.
В настоящее время у меня есть это в моем docker-compose.yml
, но нигде ничего не сказано об ОС.
version: '2'
services:
web:
build: .
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./code:/code
- ./default.conf:/etc/nginx/conf.d/default.conf
networks:
- code-network
php:
image: php:fpm
volumes:
- ./code:/code
- ./log.conf:/usr/local/etc/php-fpm.d/zz-log.conf
networks:
- code-network
networks:
code-network:
driver: bridge
Я думаю, что лучше всего хранить эти службы в виде отдельных контейнеров, но я полагаю, что все они должны быть разными экземплярами CentOS, верно?
Как мне это настроить или есть лучший способ справиться с этим?
Большое спасибо,
Если вы абсолютно хотите использовать только образы на основе CentOS, возможно, вам придется подумать о создании своих собственных.
В этом случае все ваши Dockerfiles должны начинаться с:
FROM centos
Контейнер nginx на основе centos может быть построен с помощью:
FROM centos
RUN yum install -y epel-release
RUN yum update -y
RUN yum install -y nginx
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
Это действительно похоже на то, что вы можете немного почитать о докере - и поскольку вы упомянули, что хотите «имитировать сервер, на котором работает CentOS», то виртуальная машина может быть более подходящим выбором, чем докер.
Примите во внимание, что контейнеры докеров вообще не нуждаются в какой-либо ОС - вполне возможно создать контейнер с одним двоичным файлом (и это на самом деле несколько распространено для программ, написанных на go, AFAIK). Контейнеры должны быть ориентированы на процесс - то есть вы запускаете одну программу, обычно на переднем плане, для каждого контейнера (например, nginx, php-fpm). «ОС» в контейнере - это, по сути, просто набор команд - в частности, «ОС» контейнера не имеет собственного ядра, но вместо этого использует ядро хоста. Вы «устанавливаете» CentOS, чтобы использовать инструменты CentOS (и то же самое для выбранной вами ОС), но полученная система не обязательно будет тем же самым, что и виртуальная машина или физический хост с CentOS (особенно потому, что ядра могут быть разными. , и имеют разные функции).
Образы, которые вы используете в примере, основаны как на debian (nginx, php: fpm) и являются официальными iamges.
Если вы действительно хотите имитировать сервер centos, возможно, лучшая идея - создать свои собственные изображения в виде комментариев. @iwaseatenbyagrue в предыдущем ответе