Projekt

Obecné

Profil

Akce

Deployment » Historie » Revize 1

Revize 1/19 | Další »
Jakub Vašta, 2020-03-18 17:15


Deployment

Pro deployment se bude používat Docker (s vuyžitím Docker-Compose) jeliko6 se bude jednat o webovou aplikaci.

Zákazník

  1. Bude mít přístup k testovacímu serveru, který budeme mít (pravděpodobně na ZČU), kde bude naše poslední funkční verze aplikace.
  2. Bude si moci v případě potřeby stáhnout obraz z Docker Hub.

Vývojář [!]

Struktura velmi ovlivněna návodem: https://www.cloudreach.com/en/resources/blog/containerize-this-how-to-use-php-apache-mysql-within-docker-containers/

/zcu-open-data-application/
├── apache
│   ├── Dockerfile
│   └── fcgi.apache.conf
├── docker-compose.yml
├── php
│   └── Dockerfile
├── database
│   └── database-dump.sql
└── application
    └── source-code

Jak je možné vidět, tak každá "služba" je v samostatném kontaineru a navíc je Apache využíván jako proxy (https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html) , přičemž je využito php fmp

Apache Dockerfile

FROM httpd:2.4.33-alpine
RUN apk update; \
    apk upgrade;
COPY dev.apache.conf /usr/local/apache2/conf/dev.apache.conf
RUN echo "Include /usr/local/apache2/conf/dev.apache.conf" \
    >> /usr/local/apache2/conf/httpd.conf

Apache Conf

ServerName localhost

LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so

<VirtualHost *:80>
    # Proxy .php requests to port 9000 of the php-fpm container
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1
    DocumentRoot /var/www/html/
    <Directory /var/www/html/>
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Send apache logs to stdout and stderr
    CustomLog /proc/self/fd/1 common
    ErrorLog /proc/self/fd/2
</VirtualHost>

PHP

FROM php:7.2.24-fpm-alpine3.7
RUN apk update; \
    apk upgrade;
RUN docker-php-ext-install mysqli

Docker-compose.yml
version: "3.2" 
services:
        php:
                build: './php'
                networks:
                        - backend
                volumes:
                        - ./website/:/var/www/html
        apache:
                build: './apache/'
                depends_on:
                        - php
                        - mysql
                networks:
                        - frontend
                        - backend
                ports:
                        - "-127.0.0.1-:80:80" 
                volumes:
                        - ./website/:/var/www/html/
        mysql:
                image: mysql:5.6.40
                container_name: database
                restart: always
                networks:
                        - backend
                ports:
                        - "3306:3306" 
                environment:
                        MYSQL_ROOT_PASSWORD: -pswd-
                        MYSQL_USER: -user-
                        MYSQL_PASSWORD: -pswd-
                        MYSQL_DATABASE: -db-
                volumes:
                        - ./database-dump/:/docker-entrypoint-initdb.d

networks:
        frontend:
        backend:

Database

Zde je možné mít sql dump databáze, kterou chcete využívat při startu aplikace (možné použít například jako testovací databázi)

Spuštění

Pokud máte spuštěný Docker, tak stačí pouze ze složky se souborem docker-composer.yml zavolat příkaz docker-compose up z příkazové řádky (power shellu, shellu ...)

Aktualizováno uživatelem Jakub Vašta před více než 4 roky(ů) · 1 revizí