Projekt

Obecné

Profil

Deployment » Historie » Verze 1

Jakub Vašta, 2020-03-18 17:15

1 1 Jakub Vašta
h1. Deployment
2
3
Pro deployment se bude používat Docker (s vuyžitím Docker-Compose) jeliko6 se bude jednat o webovou aplikaci.
4
5
h2. Zákazník
6
7
# 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.
8
# Bude si moci v případě potřeby stáhnout obraz z Docker Hub.
9
10
h2. Vývojář [!]
11
12
Struktura velmi ovlivněna návodem: https://www.cloudreach.com/en/resources/blog/containerize-this-how-to-use-php-apache-mysql-within-docker-containers/
13
14
<pre><code class="text">
15
/zcu-open-data-application/
16
├── apache
17
│   ├── Dockerfile
18
│   └── fcgi.apache.conf
19
├── docker-compose.yml
20
├── php
21
│   └── Dockerfile
22
├── database
23
│   └── database-dump.sql
24
└── application
25
    └── source-code
26
</code></pre>
27
28
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_
29
30
h3. Apache Dockerfile
31
32
<pre><code class="text">
33
FROM httpd:2.4.33-alpine
34
RUN apk update; \
35
	apk upgrade;
36
COPY dev.apache.conf /usr/local/apache2/conf/dev.apache.conf
37
RUN echo "Include /usr/local/apache2/conf/dev.apache.conf" \
38
	>> /usr/local/apache2/conf/httpd.conf
39
</code></pre>
40
41
h3. Apache Conf
42
43
<pre><code class="text">
44
ServerName localhost
45
46
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
47
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
48
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so
49
50
<VirtualHost *:80>
51
    # Proxy .php requests to port 9000 of the php-fpm container
52
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1
53
    DocumentRoot /var/www/html/
54
    <Directory /var/www/html/>
55
        DirectoryIndex index.php
56
        Options Indexes FollowSymLinks
57
        AllowOverride All
58
        Require all granted
59
    </Directory>
60
    
61
    # Send apache logs to stdout and stderr
62
    CustomLog /proc/self/fd/1 common
63
    ErrorLog /proc/self/fd/2
64
</VirtualHost>
65
66
</code></pre>
67
68
h3. PHP
69
70
<pre><code class="text">
71
FROM php:7.2.24-fpm-alpine3.7
72
RUN apk update; \
73
	apk upgrade;
74
RUN docker-php-ext-install mysqli
75
</code></pre>
76
77
78
h3. Docker-compose.yml
79
<pre><code class="yaml">
80
version: "3.2"
81
services:
82
        php:
83
                build: './php'
84
                networks:
85
                        - backend
86
                volumes:
87
                        - ./website/:/var/www/html
88
        apache:
89
                build: './apache/'
90
                depends_on:
91
                        - php
92
                        - mysql
93
                networks:
94
                        - frontend
95
                        - backend
96
                ports:
97
                        - "-127.0.0.1-:80:80"
98
                volumes:
99
                        - ./website/:/var/www/html/
100
        mysql:
101
                image: mysql:5.6.40
102
                container_name: database
103
                restart: always
104
                networks:
105
                        - backend
106
                ports:
107
                        - "3306:3306"
108
                environment:
109
                        MYSQL_ROOT_PASSWORD: -pswd-
110
                        MYSQL_USER: -user-
111
                        MYSQL_PASSWORD: -pswd-
112
                        MYSQL_DATABASE: -db-
113
                volumes:
114
                        - ./database-dump/:/docker-entrypoint-initdb.d
115
116
networks:
117
        frontend:
118
        backend:
119
120
</code></pre>
121
122
h3. Database
123
124
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)
125
126
h2. Spuštění
127
128
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 ...)
129
130
131
132
133
134
135
136