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¶
- 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.
- 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:
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 asi 5 roky(ů) · 1 revizí