【问题标题】:Configuring Docker with Traefik, Nginx and Laravel使用 Traefik、Nginx 和 Laravel 配置 Docker
【发布时间】:2018-09-18 05:50:39
【问题描述】:

我正在尝试弄清楚如何设置一个简单的堆栈以进行开发和以后的部署。我想利用 Docker 在容器中将 Traefik 作为面向公众的反向代理提供服务,然后根据需要与仅用于提供静态前端文件(HTML、CSS、JS)的 Nginx 容器和后端 PHP 容器进行交互。运行 Laravel(我有意为这个项目解耦前端和 API)。

我正在尽我最大的努力学习所有的视频和书面教程,但事情很快变得复杂(至少,对于我的外行来说),而且有点不知所措。我有一个星期的截止日期来完成这个项目,我强烈考虑暂时完全放弃 Docker,因为我担心我会花整个时间来搞乱配置而不是实际编码!

首先,我有一个简单的 docker-compose,它具有以下配置,我已验证至少可以正确运行:

version: '3'

services:
  reverse-proxy:
    image: traefik
    command: --api --docker # Enables Web UI and tells Traefik to listen to Docker.
    ports:
      - "80:80" # HTTP Port
      - "8080:8080" # Web UI
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events.

现在,我需要弄清楚如何有效地连接 Nginx 和 PHP/Laravel。

【问题讨论】:

    标签: laravel docker nginx traefik


    【解决方案1】:

    首先,不要让自己承受学习新事物的压力。因为如果你这样做了,学习新东西就不会那么舒服了。利用您的技术知识并完成工作。当您完成并意识到距离截止日期还有 1/2 天时,请尝试通过包含新技术来超额交付。这样您就不会耽误您的最后期限,也不会因为我们的新技术或配置而感到压力。

    您在下面看到的配置不完整,也未经过功能测试。我只是从我的 3 个主要项目中复制了大部分内容,以便为您提供一个起点。 Traefik 按原样正确设置可能很复杂。

    version: '3'
    
    # Instantiate your own configuration with a Dockerfile!
    # This way you can build somewhere and just deploy your container
    # anywhere without the need to copy files around.
    
    services:
      # traefik as reverse-proxy
      traefik:
        build:
          context: .
          dockerfile: ./Dockerfile-for-traefik # including traefik.toml
        command: --docker
        restart: always
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          # this file you'll have to create manually `touch acme.json && chmod 600 acme.json`
          - /home/docker/volumes/traefik/acme.json:/opt/traefik/acme.jso
        networks:
          - overlay
        ports:
          - 80:80
          - 443:443
    
      nginx:
        build:
          context: .
          dockerfile: ./Dockerfile-for-nginx
        networks:
          - overlay
        depends_on:
          - laravel
        volumes:
          # you can copy your assets to production with
          # `tar -c -C ./myassets . | docker cp - myfolder_nginx_1:/var/www/assets`
          # there are many other ways to achieve this!
          - assets:/var/www/assets
    
      # define your application + whatever it needs to run
      # important:
      # - "build:" will search for a Dockerfile in the directory you're specifying
      laravel:
        build: ./path/to/laravel/app
        environment:
          MYSQL_ROOT_PASSWORD: password
          ENVIRONMENT: development
          MYSQL_DATABASE: your_database
          MYSQL_USER: your_database_user
        networks:
          - overlay
        links:
          - mysql
        volumes:
          # this path is for development
          - ./path/to/laravel/app:/app
    
      # you need a database, right?
      mysql:
        image: mysql:5
        environment:
          MYSQL_ROOT_PASSWORD: password
          MYSQL_DATABASE: your_database
          MYSQL_USER: your_database_user
        networks:
          - overlay
        volumes:
          - mysql-data:/var/lib/mysql
    
    volumes:
      mysql-data:
      assets:
    
    networks:
      overlay:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 2021-08-20
      相关资源
      最近更新 更多