docker nginx配置_docker 安装开发环境中间件

前言

几年前,每次安装开发环境,都得下载、安装mysql、nginx、redis,安装复杂,配置也得从新根据新的机器从新修改,数据迁移也很麻烦,好不容易搞好了,还可能有各种不兼容。卸载也很麻烦,各种配置文件找不到,生成的各种冗余文件。一直在想是否有可以有一个随时迁移的开发环境,直到遇见docker,我尽量把所有的开发环境和中间件都安装到docker中,迁移时,只要把挂载目录迁移即可。随时启动和关闭,不用考虑为什么又突然多了个nginx,哪里来的mysql这种问题,始终保持宿主机的干净。这种方式一直用的很爽,这次特地分享下,我的安装过程和遇到一些问题。

备注

以下所有教程基于mac os

docker 安装

首先安装docker,docker是我们开发环境的基础,网上也有很多教程,这里直接上安装步骤。

我这里是使用的Homebrew进行安装的,Homebrew 的Cask 很方便,很多软件都可以直接进行安装。

brew cask install docker

安装成功后,docker栏上会出现小鲸鱼,那就是docker for mac的图标。我这里没有做任何修改,墙的问题需要自行解决,我这里不存在墙的问题,所以也不考虑墙。

docker-compose安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

docker目录

后续所有内容都会放到docker目录下

mkdir -p ~/docker/mysql
mkdir -p ~/docker/mongo
mkdir -p ~/docker/redis
mkdir -p ~/docker/nginx/conf
mkdir -p ~/docker/nginx/log
mkdir -p ~/docker/nginx/www
60145c7c5887fd636c39886a3ccba0bf.png

docker 网络创建

后续所有docker都会根据common网络下

docker network create --subnet 172.21.0.0/16 common 

中间件 docker-compose.yml 配置

version: "3"
services:
  mysql:
    container_name: mysql
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456 # 定义mysql root密码
    volumes:
      - ~/docker/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      default:
        ipv4_address: 172.21.0.10
  redis:
    container_name: redis
    restart: always
    image: redis
    volumes:
      - ~/docker/redis:/data
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes
    networks:
      default:
        ipv4_address: 172.21.0.11
  nginx:
    container_name: nginx
    image: nginx:1.11.6-alpine
    ports:
      - 80:80
      - 443:443
    volumes:
      - ~/docker/nginx/conf.d:/etc/nginx/conf.d
      - ~/docker/nginx/log:/var/log/nginx
      - ~/docker/nginx/www:/var/www
    networks:
      default:
        ipv4_address: 172.21.0.12
  mongo:
    container_name: mongo
    image: mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=123456
    ports:
      - "27017:27017"
    volumes:
      - "~/docker/mongo:/data/db"
    command: mongod
    networks:
      default:
        ipv4_address: 172.21.0.13

networks:
  default:
    external:
      name: common

启动

在docker-compose.yml所在目录执行

docker-compose up -d
1f5d3bd5ac573bb3734e3a9be8090b73.png

  • 我在docker for mac中设置镜像加速,每次都没什么用,建议直接去/etc/docker/daemon.json 修改配置文件
  • docker for mac 偶尔会崩溃导致所有下载的镜像都没了,需要从新下载,关键你不知道你有哪些镜像,所以建议备份下载的镜像
# 保存镜像文件
docker save -o 镜像名称_版本.tar 镜像名称:版本
# 加载镜像文件
docker load -i 镜像名称_版本.tar
  • 在mac for docker中访问宿主机ip使用host.docker.internal,下面是nginx的一个案例
server {
    listen 80;
    server_name git.liuyt.com;

    location / {
      proxy_pass http://host.docker.internal:3000;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header REMOTE-HOST $remote_addr;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值