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 |