美文网首页
docker-compose菜鸟日记

docker-compose菜鸟日记

作者: Mister糖糖 | 来源:发表于2020-01-17 16:17 被阅读0次

    简书不支持markdown 可以去掘金看我原文

    起源

    docker教程满大街,为啥要再写?

    - 看了别人的教程,还是不会

    - 命令太多记不住

    - 满大街的教程大同小异

    - 我们要学会自己看官网

    docker介绍

    - 别人的教程写太多了 docker官网看看吧

    docker安装、docker-compose安装

    - 请选用docker-ce(社区版免费)

    - 我们还是要学会看 英文官网 如何安装docker

    > 如果安装的是mac版本无需再单独 安装docker-compose 其他版本请参考官网

    - 最后,命令行 `docker-compose version` 一下

    docker-compose部署

    - 这里要接触到 docker 的 network 4个模式中的 `bridge` (默认)、`host`

    > 注意事项:macos 10.15.x(也许macos上host模式都有问题)上`docker`的`host`模式有问题,我的`macos`上`host`模式无法访问,同样的配置放到 *linux云服务器* 是可以运行的

    部署nginx

    相关链接

    1. docker-compose官网 compose-file

    2. docker hub的 nginx

    手把手一步步

    1. 新建目录并命名、在新建目录下新建`docker-compose.yaml`,yml文件后缀也是可以的

    2. 内容如下

    ```yaml

    #

    # https://docs.docker.com/compose/compose-file/

    # 指定format的版本,我也不知道干啥的

    version: "3.7"

    # compose file的三大金刚(service、networks、volumes)之一,用来定义应用

    services:

      # web这个是随便命名的

      web:

        # 指定nginx镜像

        image: nginx

        # 指定映射端口8088(前一个),到容器内80(后一个)

        ports:

          - 8088:80

    ```

    3. 运行一发`docker-compose up`,如果需要后台运行只需要多加一个 `-d` 参数,我们也可以运行 `docker-compose run --help` 查看帮助

    4. 现在可以访问 本地localhost:8088 看到nginx欢迎您说明好了

    还有优化空间

    1. 将容器内nginx配置拷贝出来放到本地,后面通过文件映射的方式让容器读取你指定的配置

    2. 使用host模式绕过一层docker路由将容器内端口暴露(安全性又是个问题)

    如何指定静态文件和配置映射

    1. volumes 字段配置,我的是这样的:

    ```yaml

    # https://docs.docker.com/compose/compose-file/

    # 指定format的版本,我也不知道干啥的

    version: "3.7"

    # compose file的三大金刚(service、networks、volumes)之一,用来定义应用

    services:

      # web这个是随便命名的

      web:

        # 指定nginx镜像

        image: nginx

        # 指定映射外部端口8088(前一个),到容器内80(后一个)

        ports:

          - 8088:80

        volumes:

          - ./html:/usr/share/nginx/html

          - ./nginx:/etc/nginx

    ```

    2. 指定了当前目录下的html文件夹映射到`/usr/share/nginx/html`目录,nginx文件夹映射到`/etc/nginx`,要映射到哪怎么知道呢?当然是前面给出的docker hub的 nginx 里面找到的,当然,你要是对nginx配置熟悉的话另说

    3. 在刚才的nginx容器里面拷贝出配置文件来

    ```shell

    # 查看刚才启动的容器,复制容器id或者name(这里我们不一样)

    docker container ls

    # 复制容器内的静态文件到当前目录,用容器id

    docker container cp bc1fbbe11a2b:/usr/share/nginx/html .

    # 复制容器内的配置文件到当前目录,也可以用容器name

    docker container cp docker_web_1:/etc/nginx .

    ```

    4. `ctrl+c` 结束 `docker-compose up` 或者 `docker-compose down` 结束 `docker-compose up -d` (注意命令行窗口切换问题)

    5. 再次启动容器`docker-compose up`我们就使用的自己的静态文件和nginx配置了

    6. 从此以后再也不用担心容器重启配置文件无法保存的问题了

    如何使用host模式

    再加一句 `network_mode: host` 重启容器就好了

    ```yaml

    # https://docs.docker.com/compose/compose-file/

    # 指定format的版本,我也不知道干啥的

    version: "3.7"

    # compose file的三大金刚(service、networks、volumes)之一,用来定义应用

    services:

      # web这个是随便命名的

      web:

        # 指定nginx镜像

        image: nginx

        volumes:

          - ./html:/usr/share/nginx/html

          - ./nginx:/etc/nginx

        # 指定映射端口8088(前一个),到容器内80(后一个)

        ports:

          - 8088:80

        network_mode: host

    ```

    > 注意加上之后使用的host模式直接将容器内端口暴露在外面,所以上面的

    ```yaml

    ports:

    - 8088:80

    ```

    > 将自动失效,而且前面还说了,macos中host模式无效的问题,需要在linux上操作一发,windows系统host模式我不知道行不行

    线上部署问题

    记得带上`-d`参数,阿里云之类的可能涉及到端口开放之类的问题,需要后台设置

    部署mysql

    ```yaml

    version: "3.7"

    services:

    # db我起的名字

      db:

      # 这里学到一个新知识,设置运行后容器的名字为“mydb”

        container_name: mydb

        image: mysql

        # 抄官网的

        command: --default-authentication-plugin=mysql_native_password

        restart: always

        # 环境变量

        environment:

        # 数据库root密码,这个镜像特殊的东西,镜像说明里面找的

          MYSQL_ROOT_PASSWORD: db_pwd.

        network_mode: host

        ports:

          - 3306:3306

        volumes:

          - ./conf.d:/etc/mysql/conf.d

          - ./mysql:/var/lib/mysql

    ```

    手把手教学

    1. docker hub mysql 链接

    2. 按照之前的套路,参考官网说明->写yaml配置->复制容器内的文件到本地-> `volumes` 映射配置与数据存储

    3. 启动容器

    4. 可以用navicat 之类的连接数据库了,好像都不需要去设置什么允许远程连接

    结语

    - 欢迎各位的批评指导文中的疏漏之处

    相关文章

      网友评论

          本文标题:docker-compose菜鸟日记

          本文链接:https://www.haomeiwen.com/subject/dvaczctx.html