Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docker 安装开发环境中间件 #67

Open
iliuyt opened this issue Sep 23, 2020 · 0 comments
Open

docker 安装开发环境中间件 #67

iliuyt opened this issue Sep 23, 2020 · 0 comments

Comments

@iliuyt
Copy link
Owner

iliuyt commented Sep 23, 2020

前言

几年前,每次安装开发环境,都得下载、安装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

image

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

image

  • 我在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;
    }
}
@iliuyt iliuyt changed the title gitea 记录 docker 安装开发环境中间件 Oct 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant