经过一段时间的学习和研究,终于把Docker Compose如何快速部署整个基础开发环境给搭建好了。
铁杵磨成针,只要功夫深,相信大家也可以通过每一步的学习,从而把知识掌握。
下面就跟着我的步伐,带你如何快速搭建Docker应用环境。
version: "3.8" # 指定 docker-compose.yml 文件的写法格式 services: # 用来表示compose需要启动的服务 本文件从.env文件读取变量 redis: # 自定义服务名 image: redis:${REDIS_IMAGE_TAG:-6.0.8-alpine} # 指定服务所使用的镜像 container_name: ${REDIS_CONTAINER_NAME:-redis} # docker容器实例名称 restart: always # 配置重启,表示如果服务启动不成功会一直尝试 privileged: true # 特权模式,修改系统变量 environment: # 环境变量定义 - TZ=Asia/Shanghai - author=${AUTHOR:-ucucs} ports: # 端口映射,外部访问的端口 不同端口可以如此配置 6379:6380,单独写代表随机端口 - ${REDIS_PORT:-6379}:6379 networks: # 网络网段定义 - frontend volumes: # 加载本地目录下的配置文件到容器目标地址下 - ${REDIS_CNF:-./config/redis/redis.conf}:/usr/local/etc/redis/redis.conf - ${REDIS_DATA:-./data/redis/}:/data/ - ${REDIS_LOG:-./log/redis/}:/var/log/redis/ command: # 表示以这个命令来启动服务 /bin/sh -c "echo 65535 > /proc/sys/net/core/somaxconn && echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag && redis-server /usr/local/etc/redis/redis.conf" mysql: container_name: mysql image: mysql:${MYSQL_IMAGE_TAG:-5.7.31} restart: always env_file: # 读取指定的环境变量文件 - ./mysql.env environment: - TZ=Asia/Shanghai - LANG=C.UTF-8 - MYSQL_INITDB_SKIP_TZINFO=yes - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-ucucs} - MYSQL_ROOT_HOST=${MYSQL_ROOT_HOST:-%} - MYSQL_USER=${MYSQL_USER:-ucs} - MYSQL_PASSWORD=${MYSQL_PASSWORD:-ucspwd} - MYSQL_DATABASE=${MYSQL_DATABASE:-ucsdb} ports: - ${MYSQL_PORT:-3306}:3306 networks: - backend volumes: - ${MYSQL_CNF:-./config/mysql/my.cnf}:/etc/mysql/conf.d/my.cnf - ${MYSQL_DATA:-./data/mysql/}:/var/lib/mysql/ - ${MYSQL_INIT:-./data/mysql-init/}:/docker-entrypoint-initdb.d/ - ${MYSQL_LOG:-./log/mysql/}:/var/log/mysql/ entrypoint: bash -c "chown -R mysql:mysql /var/log/mysql && exec /entrypoint.sh mysqld" nginx: container_name: nginx image: nginx:1.19.2 environment: - TZ=Asia/Shanghai ports: - "80:80" volumes: - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf - ./config/nginx/conf.d/:/etc/nginx/conf.d/ - ./data/nginx/:/usr/share/nginx/html/ - ./log/nginx/:/var/log/nginx/ restart: always networks: # 网络定义 frontend: # 网络命名 driver: bridge # 定义网络模式,默认时可忽略 bridge(默认) host none service:[service name] container:[container name/id] backend:
相信大家可以看到,命令都有相应的文本表示,方便大家入门和学习。
同时,采用环境变量的方式,已经提供基础优化的配置,方便大家快捷搭建出稳定可用的版本。
具体环境变量,请查看源代码里的.env文件