docker-compose.yml
示例
version: '3.8'
services:
web:
image: nginx:latest
container_name: my_nginx_container
ports:
- "8080:80" # 将主机的 8080 端口映射到容器的 80 端口
volumes:
- ./html:/usr/share/nginx/html # 将主机的 ./html 文件夹映射到容器的 /usr/share/nginx/html 文件夹
- ./nginx.conf:/etc/nginx/nginx.conf # 将主机的 ./nginx.conf 文件映射到容器的 /etc/nginx/nginx.conf 文件夹
environment:
- NGINX_ENV_VAR=value # 设置环境变量
mem_limit: 512m # 限制容器最多使用 512MB 内存
restart: always # 确保容器始终重启
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
- my_network
db:
image: mysql:8.0
container_name: my_mysql_container
ports:
- "3306:3306" # 将主机的 3306 端口映射到容器的 3306 端口
volumes:
- db_data:/var/lib/mysql # 将数据存储在 Docker 卷中
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=mydatabase
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypassword
mem_limit: 1g # 限制容器最多使用 1GB 内存
restart: unless-stopped # 确保容器在 Docker 守护进程重启后自动启动
logging:
driver: "json-file"
options:
max-size: "20m"
max-file: "5"
networks:
- my_network
volumes:
db_data:
networks:
my_network:
driver: bridge
配置说明
服务配置 (services
)
-
web
服务:image
: 使用nginx:latest
镜像。container_name
: 设置容器名称为my_nginx_container
。ports
: 将主机的 8080 端口映射到容器的 80 端口。volumes
:- 将主机的
./html
文件夹映射到容器的/usr/share/nginx/html
文件夹。 - 将主机的
./nginx.conf
文件映射到容器的/etc/nginx/nginx.conf
文件夹。
- 将主机的
environment
: 设置环境变量NGINX_ENV_VAR
。mem_limit
: 限制容器最多使用 512MB 内存。restart
: 确保容器始终重启。logging
: 配置日志驱动和选项。networks
: 将容器连接到my_network
网络。
-
db
服务:image
: 使用mysql:8.0
镜像。container_name
: 设置容器名称为my_mysql_container
。ports
: 将主机的 3306 端口映射到容器的 3306 端口。volumes
: 使用 Docker 卷db_data
存储 MySQL 数据。environment
: 设置 MySQL 的环境变量。mem_limit
: 限制容器最多使用 1GB 内存。restart
: 确保容器在 Docker 守护进程重启后自动启动。logging
: 配置日志驱动和选项。networks
: 将容器连接到my_network
网络。
卷配置 (volumes
)
db_data
: 用于存储 MySQL 数据的 Docker 卷。
网络配置 (networks
)
my_network
: 使用桥接网络驱动创建一个名为my_network
的网络,以便服务之间可以相互通信。
使用方法
-
创建目录结构:
mkdir my_project cd my_project mkdir html touch nginx.conf
-
创建
docker-compose.yml
文件:
将上述示例内容复制到docker-compose.yml
文件中。 -
启动服务:
docker-compose up -d
-
验证服务:
docker-compose ps
-
访问服务:
- 打开浏览器,访问
http://localhost:8080
,确保 Nginx 服务正常运行。 - 使用 MySQL 客户端连接到
localhost:3306
,验证 MySQL 服务是否正常运行。
- 打开浏览器,访问
自定义配置
你可以根据需要保留或删除相应的配置部分。例如:
-
删除
db
服务:services: web: ...
-
删除
volumes
部分:services: web: ... volumes: - ./html:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf
-
删除
networks
部分:services: web: ... networks: - default
根据自己需求可以调整 docker-compose.yml
文件!