有这样一个镜像可以快速部署LEMP
version: '2'
services:
nginx:
image: evild/alpine-nginx:1.9.15-openssl
container_name: lemp_nginx
restart: always
links:
- php
volumes:
- ./public:/var/www/html/:ro
- ./nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro
ports:
- 80:80
- 443:443
php:
image: evild/alpine-php:7.0.6
container_name: lemp_php
restart: always
volumes:
- ./html:/var/www/html
depends_on:
- db
links:
- db
environment:
- DB_NAME=lemp_bdd
- TABLE_PREFIX=lemp_
- DB_HOST=lemp
- DB_PASSWORD=password
db:
image: mariadb:latest
container_name: lemp_mariadb
restart: always
volumes:
- db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
volumes:
db-data:
driver: local
有一个 docker-compose yml 文件,如上所述。
以下几点不清楚:
1.nginx镜像
volumes:
- ./public:/var/www/html/:ro
- ./nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro
ports:
- 80:80
- 443:443
1.1 行末的声音:ro - 这是什么意思?
1.2 端口 443 听起来像什么?
2.php图像
volumes:
- ./public:/var/www/html
environment:
- DB_NAME=lemp_bdd
- TABLE_PREFIX=lemp_
- DB_HOST=lemp
- DB_PASSWORD=password
2.1 Зачем в образе php указывать еще раз корень ./public:/var/www/html
2.2 Почему переменные базы лежат в образе php, а не db?
2.3 Переменные по базе(DB_NAME, TABLE_PREFIX и т.д) - это уже установленные в образе? То есть чтобы поменять имя базы и прочее, мне нужно залазить внутрь контейнера? Или эти данные будут браться для создания базы с такими параметрами?
2.4 Почему - DB_HOST=lemp, обычно localhost или ip или это внутри контейнера в hosts прописано 127.0.0.1 lemp?
2.db图像
volumes:
- db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
3.1 - db-data:/var/lib/mysql - 这一行是做什么用的?
3.2 - - MYSQL_ROOT_PASSWORD=password为root密码,但是php镜像中没有DB_USERNAME= ,需要重新进入容器创建用户?
volumes:
db-data:
driver: local
这个块是做什么用的?
只读:容器不能修改挂载点上的文件,但可以读取它们。这是一种很好的做法,可以防止某些(但不太可能)攻击。
HTTPS 对整个数据流进行加密,因此是一种根本不同的协议(尽管在内部传输完全相同的数据),因此必须在单独的端口上进行处理。HTTPS 的默认值为 443。
因为这些不是“基础变量”,而是数据库中授权所需的数据
因为容器中的127.0.0.1是容器本身,base在另一个容器/另一台机器上可以简称为lemp(可能只是命名错误,我说的是lemp_mariadb)
"挂载db-data目录,与docker-compose.yml同级,在容器内为/var/lib/mysql"