前言
为了使我们编排的有序,不会显的混乱。我们首先创建需要的目录,然后在不同目录下建立自己的Dockerfile 文件。接下来都是硬货,大家要仔细认真的阅读。
实操
使用三步骤
- 使用Dockerfile定义应用程序的环境
- 使用docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境种一起运行
- 最后,执行docker-compose up 命令来启动并运行整个应用程序。
$root@VM-8-11-ubuntu:/home# mkdir lnmp
$root@VM-8-11-ubuntu:/home# cd lnmp
$root@VM-8-11-ubuntu:/home/lnmp# mkdir php mysql nginx
$root@VM-8-11-ubuntu:/home/lnmp# ls
mysql nginx php
# 编写自己的文件
$root@VM-8-11-ubuntu:vim docker-compose.yml
# nginx目录创建Dockerfile 文件
$root@VM-8-11-ubuntu:/home/lnmp/nginx# ls
conf.d Dockerfile fastcgi_params logs nginx.conf
# php的Dockerfile 文件
$root@VM-8-11-ubuntu:/home/lnmp/php# ls
Dockerfile logs php.ini
# docker-compose.yml文件
version: "3" #表示我们的compose文件的版本,目前有1,2,3,每个版本语法不尽相同,这里以版本3为例
services:
nginx:
build:
context: ./nginx # 上下文nginx的Dockerfile目录
container_name: nginx # 容器名
ports: # 端口映射
- "8080:80"
volumes: # 数据卷挂载
- ./www:/www/:rw
- ./nginx/conf.d:/etc/nginx/conf.d/:rw
- ./nginx/logs:/var/log/nginx/:rw
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
environment:
TZ: "Asia/Shanghai" # 时区设置
depends_on:
- php
restart: always # 总是重启
networks: # 网络设置 默认是docker0 的网桥模式
- default
php:
build:
context: ./php
container_name: php
ports:
- "9501"
volumes:
- ./www:/www/:rw
- ./php/logs:/var/log/php
restart: always
cap_add:
- SYS_PTRACE
networks:
- default
mysql:
image: mysql:5.7.28
container_name: mysql
ports:
- 3305:3306 // 端口映射
volumes:
- ./mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
- ./data/mysql:/var/lib/mysql/:rw
restart: always
networks:
- default
environment:
MYSQL_ROOT_PASSWORD: "123456" // mysql官网需要设置默认密码
TZ: "Asia/Shanghai"
这时我们发现就构建成功啦,大家可以参照这个形式,建造属于自己一套 docker-compose.yml 文件。注意:以上在 docker-compose.yml中的所有本地的参数 都可以新建一个 .ENV 文件来设置。
执行命令
- 先执行 docker-compose build 构建镜像
- 再执行 docker-compose up -d 运行容器,-d 为后台运行容器
注意: 可以直接执行 第二个命令的,因为如果本地没有镜像 ,会去先pull 镜像 再运行容器的。
还有些常用命令
- docker-compose stop [容器名] 不填则停止所有容器
- docker-compose start [容器名] 不填则启动所有
- docker-compose restart [容器名] 重启容器
注意
当发现有容器启动不了时,可以查看下配置是否正确,端口这些,也可通过 docker logs 查看日志,也可在 docker-compose.yml 文件的 service下 添加 tty: true
参考文件。1