Dockerfile 我认为就是配置文件的意思,touch Dockerfile 或者vi Dockerfile 都可以,然后:wq
Dockerfile 是Docker构建镜像要用到的配置文件
内容的话借鉴别人配置好的,省的麻烦。
反正觉得挺麻烦的,不过大家都用就用吧。
http://www.docker.org.cn/docker/148.html
要不就去看他写的,反正就这样。
docker-compose.yml解释
- volumes 挂载的路径,把./app(宿主机中的一个目录)挂载到/www/web(容器内的/www/web目录下)
- build 定义了你的 dockerfile 在哪里,如果没有写 dockerfile 可以不用 build,可以用 images参数定义官方镜像,比如image:mysql:5.7;
- depends_on表示将依赖其它镜像,比如nginx依赖php-fpm,没有它我nginx没法玩;
- links定义连接,比如要连接到php-fpm容器,就是php-fpm:php-fpm,后面是别名;
- ports表示端口映射,80:80表示将80端口映射到宿主机的80端口
- restart重启,restart: always表示将自动重启
- command是自动执行的命令
- 第一次docker-composer build比较久,看你装的东西多不多了
常规必用操作:
后台运行:(守护进程的方式)
docker-compose up -d
查看compose启动的各个容器的状态:
docker-compose ps
进入某个容器,譬如php:
docker-compose exec php bash
退出某个容器
exit
停止 docker compose启动的容器:
docker-compose stop
version: "2"
services:
web:
image: nginx:latest
ports:
- "80:80"
restart: always
volumes:
- ./app:/www/web
- ./services/web/nginx/conf:/etc/nginx
- ./services/web/nginx/logs:/www/web_logs
networks:
- code-network
depends_on:
- php
mysql:
image: mysql:5.7
volumes:
- ./db/mysql/data:/var/lib/mysql
- ./db/mysql/example_db:/var/example_db
- ./db/mysql/conf.d:/etc/mysql/conf.d
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=fecshop
networks:
- code-network
php:
build:
context: ./services/php/docker/
restart: always
volumes:
- ./app:/www/web
- ./services/php/etc/php7.1.13.ini:/usr/local/etc/php/conf.d/php7.1.13.ini
depends_on:
- mongodb
- mysql
networks:
- code-network
mongodb:
image: mongo:3.7
restart: always
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/data/logs
volumes:
- ./db/mongodb/data:/data/db
- ./db/mongodb/example_db:/data/example_db
- ./db/mongodb/logs:/data/logs
networks:
- code-network
xunsearch:
image: hightman/xunsearch:latest
restart: always
volumes:
- ./db/xunsearch/data:/usr/local/xunsearch/data
networks:
- code-network
redis:
image: redis:4.0
restart: always
environment:
REDIS_PASS_FILE: /run/secrets/redis-password
command: [
"bash", "-c",
'
docker-entrypoint.sh
--requirepass "$$(cat $$REDIS_PASS_FILE)"
'
]
volumes:
- ./db/redis/etc/redis.conf:/usr/local/etc/redis/redis.conf
- ./db/redis/data:/data
- ./db/redis/etc/redis-password:/run/secrets/redis-password
networks:
- code-network
networks:
code-network:
driver: bridge