Tutorial: Web development z narzędziem Docker

in #polish8 years ago (edited)

Zdaniem portalu Linux.com,

610px-Docker_(container_engine)_logo.svg.png

Docker jest narzędziem, które może zbudować aplikację, wraz z jej wszystkimi zależnościami,
wewnątrz kontenera, który z kolei może być uruchomiony na dowolnym serwerze działającym w środowisku Linux.
Pozwala to na uzyskanie elastyczności i przenośności. Aplikacja może w ten sposób zostać uruchomiona i działać w dowolnym miejscu: u providera, w chmurze publicznej lub prywatnej.

Jak przyspieszyć Symfony web development korzystając z narzędzia Doker?

Stack:

  1. PHP 7.1
  2. MySQL 5.7
  3. Symfony 4

Jak rozpocząć?

Upewnij się, że usługa narzędzia Docker jest uruchomiona.

Otwórz Terminal.

Przejdź do wybranego katalogu.

Utwórz katalog, w którym będzie znajdował się Twój projekt.

dev@dev: mkdir myproject && cd myproject


Wewnątrz katalogu myproject utwórz dwa nowe katalogi.

dev@dev: mkdir docker-myproject && mkdir myapp


Przejdź do katalogu docker-myproject.

dev@dev: cd docker-myproject

Ustawienie zmiennych środowiskowych

W głównym katalogu Twojego projektu utwórz plik .env.

dev@dev: touch .env && nano .env


Do pliku .env skopiuj i wklej poniższą konfigurację.


APP_PATH=../myapp
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=mydb      
MYSQL_USER=user
MYSQL_PASSWORD=password

Zapisz zmiany naciskając Control + o, a następnie opuść program wybierając Control + x.

Konfiguracja usług

Utwórz plik o nazwie docker-compose.yml i otwórz go.

dev@dev: touch docker-compose.yml && nano docker-compose.yml


Skopiuj i wklej poniższy kod do pliku docker-compose.yml.


version: '2'
services:
    db:
        image: mysql
        volumes:
            - "./.data/db:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
            MYSQL_DATABASE: ${MYSQL_DATABASE}
            MYSQL_USER: ${MYSQL_USER}
            MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    php:
        build:
            context: php
        ports:
            - 80:80

Zapisz zmiany.

Przygotowanie instrukcji do budowy obrazu php w Dockerfile

Utwórz katalog o nazwie php i przejdź do niego.

dev@dev: mkdir php && cd php

Utwórz, a następnie otwórz do edycji plik Dockerfile.

dev@dev: touch Dockerfile && nano Dockerfile

Do pliku Dockerfile wklej poniższą konfigurację:

FROM php:7.1-apache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN apt-get update && apt-get install -y \
        git \
        unzip
RUN a2enmod rewrite
ADD myapp.conf /etc/apache2/sites-available/000-default.conf


Zapisz zmiany i wyjdź z edytora.

Konfiguracja virtualhost

Znajdując się w katalogu php, utwórz nowy plik o nazwie vhost.conf i otwórz go do edycji.

dev@dev: touch myapp.conf && nano myapp.conf


Do pliku vhost.conf wklej poniższą zawartość:


<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html/public
    <Directory /var/www/html/public>
        AllowOverride All
        Order Allow,Deny
        Allow from All
        
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
        </IfModule>
    </Directory>
</VirtualHost>

Zapisz zmiany i wyłącz edytor.

Uruchomienie kontenerów

Aby zbudować obraz php na podstawie powyższej konfiguracji i uruchomić Twoje kontenery w tle, skorzystaj z poniższego kodu:

dev@dev: docker-compose up -d --build

W związku z faktem, że uruchamiany nasz skrypt po raz pierwszy, z sieci w pierwszej kolejności zostaną wszelkie potrzebne zasoby, dopiero potem program utworzy kontenery i uruchomi je.

Wyświetlenie aktywnych kontenerów

W celu wyświetlenia aktywnie działających kontenerów (wraz z ich identyfikatorami), wykonaj polecenie:

dev@dev: docker ps


Przykładowy output:


CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
af2e2ddeb785        mysql               "docker-entrypoint.s…"   3 seconds ago       Up 3 seconds        3306/tcp             dockermyproject_db_1
4586304f33f7        php:7.1-apache      "docker-php-entrypoi…"   3 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   dockermyproject_php_1

Instalacja Symfony4

Połączyć się ze swoimi kontenerami (za pomocą ssh) wpisując:

dev@dev: docker-compose exec php bash



Screen Shot 2018-02-15 at 21.20.14.png

Utwórz nowy projekt Symfony za pomocą narzędzia composer.

root@2de2bfbeeb9c:/var/www/html# composer create-project symfony/skeleton .



Gdy narzędzie zakończy swoje działanie, otwórz przeglądarkę i przejdź do adresu: http://localhost. Na ekranie powinieneś ujrzeć:

Screen Shot 2018-02-16 at 15.07.02.png

To wszystko! Teraz możesz przejść do tego, co lubisz najbardziej - czyli web development!

Sort:  

You got a 1.37% upvote from @mercurybot courtesy of @piotr42!

You got a 2.47% upvote from @bid4joy courtesy of @piotr42!

Coin Marketplace

STEEM 0.12
TRX 0.34
JST 0.032
BTC 109452.32
ETH 4010.37
USDT 1.00
SBD 0.80