Como Conteinerizar um aplicativo Laravel para desenvolvimento com o Docker Compose em Ubuntu 18.04
Introdução
Conteinerizar um aplicativo se tham khảo ao processo de adaptar um aplicativo e seus componentes com a finalidade de conseguir Operatingutá-lo em ambientes leves, conhecidos como contêineres . Esses ambientes são isolados e descartáveis e podem ser aproveitados para desenvolver, testar e implantar aplicativos para a produção.
Neste guia, usaremos o Docker Compose para Conteinerizar um aplicativo Laravel para desenvolvimento. Quando você tiver terminado, terá um aplicativo de demoração Laravel funcionando em três contêineres de serviço strados:
- Um serviço de
app
thực thi o PHP7.4-FPM; - Um serviço de
db
executando o MySQL 5.7; - Um serviço de
nginx
que usa o serviço deapp
para analisar o codigo PHP, antes de entregar o aplicativo Laravel para o usuário final.
Para permitir um processo de desenvolvimento simpleficado e secureitar a depuração do aplicativo, manteremos os arquivos do aplicativo sincronizados, usando volume compartilhados. Também veremos como usar os comandos do docker docker-compose exec
compile executive para executive o Composer eo Artisan no contêiner do app
.
Pré-recisitos
- Acesso a uma máquina local com Ubuntu 18.04 ou um servidor de desenvolvimento como um usuário não raiz com privilégios para o comando sudo. Se estiver usando um servidor remoto, é recomendável ter um firewall ativo instalado. Para preparar tudo isso, consulte nosso Guia de configuração inicial de servidor para o Ubuntu 18.04 .
- O Docker instalado no seu servidor, de acordo com as toolsções dos Passos 1 e 2 làm hướng dẫn sobre Como instalar e usar o Docker no Ubuntu 18.04 .
- O Docker Soạn instalado no seu servidor, de acordo com as toolsções do Passo 1 làm hướng dẫn sobre Como instalar o Docker Soạn không Ubuntu 18.04 .
Passo 1 - Obtendo o aplicativo Demo
Para começar, iremos buscar o aplicativo de showsração do Laravel a partir de seu repositório do GitHub . Estamos interessados na ramificação do tutorial-01
, que contém o aplicativo básico do Laravel que criamos no primeiro guia desta série .
Para obter o código do aplicativo compatível com hướng dẫn este, baixe a versão tutorial-1.0.1
para seu diretório home com:
- cd ~
- curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip
Vamos Preisar do comando unzip
para descompactar o código do aplicativo. Caso não tenha instalado esse antes pacote, mặt tiền isso agora com:
- sudo apt update
- sudo apt install unzip
Agora, descompacte o Conteúdo do aplicativo e renomeie o diretório descompactado para ter um acesso mais fácil:
- unzip travellist.zip
- mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo
Navegue até o diretório travellist-demo
:
- cd travellist-demo
Không próximo passo, vamos criar um .env
de configuração .env
para configurar o aplicativo.
Passo 2 - Configurando o .env
do aplicativo
Os arquivos de configuração do Laravel estão localizados em um diretório chamado config
, dentro do diretório raiz do aplicativo. Além disso, um .env
é usado para preparar a configuração depende do ambiente , como credenciais e quaisquer Informações que kangam variar entre as implantações. Esse arquivo não está incluído không có kiểm soát de revisão.
Aviso : o arquivo de configuração de ambiente contém Informações confidenciais sobre o seu servidor, incluindo credenciais para o banco de dados e chaves de segurança. Por esse motivo, nunca compartilhe esse arquivo publicamente.
Os valores contidos no .env
terão preência sobre os valoresminados nos arquivos de configuração quy định, localizados no diretório config
. Cada instalação em novo ambiente exige um arquivo de ambiente personalizado paraminar coisas como as configurações da conexão com o banco de dados, as opções de depuração, o URL do aplicativo, entre outros itens que kangam variar, dependendo do ambientevo em que o ap funcionando.
Agora, vamos .env
um novo .env
para personalizar as opções de configuração do ambiente de desenvolvimento que estamos preparando. O Laravel vem com um .env
que podemos copiar para criar o nosso:
- cp .env.example .env
Abra este arquivo usando o nano
ou outro editor de texto de sua escolha:
- nano .env
O .env
atual do aplicativo demo travellist
contém as configurações para usar um banco de dados local do MySQL, com o 127.0.0.1
como o host do banco de dados. Precisamos atualizar một variável DB_HOST
para que ela Aponte para o SERVICO de Banco de dados que Vamos criar em nosso Ambiente làm Docker. Neste guia, vamos chamar nosso serviço de banco de dados de db
. Vá em frente e substitua o dũng cảm listado de DB_HOST
Pelo nome làm SERVICO de Banco de dados:
APP_NAME=Travellist APP_ENV=dev APP_KEY= APP_DEBUG=true APP_URL=http://localhost:8000 LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password ...
Caso queira, sinta-se à vontade para alterar o nome do banco de dados, nome de usuário e senha. Essas variáveis aproveitadas serão em um tới passo, onde iremos definir o arquivo docker-compose.yml
para configurar nossos Servicos.
Salve o arquivo quando terminar de editar. Se você usou o nano
, você pode fazer isso pressionando Ctrl+x
, depois Y
e Enter
para Confirmar.
Passo 3 - Configurando o Dockerfile do aplicativo
Embora ambos os nossos serviços do MySQL e do Nginx se baseiem em imagens padronizadas, obtidas a partir do Docker Hub , ainda Preisaremos tương tự uma imagem personalizada para o contêiner do aplicativo. Criaremos um novo Dockerfile para isso.
Nossa imagem làm travellist Ira basear-se na imagem oficial làm PHP , php:7.4-fpm
làm Docker Hub. Além desse ambiente básico do PHP-FPM, instalaremos alguns módulos adicionais do PHP ea ferramenta de gerenciamento de dependência do Composer .
Também iremos criar um novo usuário do sistema; isso é needário para actutar comandos do artisan
e do composer
durante o desenvolvimento do aplicativo. A configuração do uid
garante que o usuário dentro do contêiner tenha o mesmo uid que o usuário do sistema no seu computador host, onde você estiver executeutando o Docker. Dessa forma, quaisquer arquivos criados por esses comandos são replicados no host com as permissões corretas. Isso também ý nghĩa là que você poderá usar o editor de códigos de sua escolha no computador host para desenvolver o aplicativo que está executando dentro dos contêineres.
Crie um novo Dockerfile com:
- nano Dockerfile
Copie o seguinte Conteúdo para o seu Dockerfile:
FROM php:7.4-fpm # Arguments defined in docker-compose.yml ARG user ARG uid # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip \ unzip # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd # Get latest Composer COPY --from=composer:latest /usr/bin/composer /usr/bin/composer # Create system user to run Composer and Artisan Commands RUN useradd -G www-data,root -u $uid -d /home/$user $user RUN mkdir -p /home/$user/.composer && \ chown -R $user:$user /home/$user # Set working directory WORKDIR /var/www USER $user
Não se esqueça de salvar o arquivo quando terminar.
Nosso Dockerfile começa pela Defção da imagem base que estamos usando: php:7.4-fpm
.
Apos pacotes os instalar làm sistema e như Phần mở rộng làm PHP, instalaremos o Composer, copiando o executável composer
de sua Ultima imagem oficial para Nossa imagem làm aplicativo.
Então, um novo usuário do sistema é criado e configurado usando os đối số user
e uid
que foram statementarados no início do Dockerfile. Esses valores serão invetados pelo Docker Soạn không momento da compilação.
Por fim, definimos o dir padrão em funcionamento como /var/www
e trocamos para o usuário recém-criado. Isso garantirá que, áo comandos executar os làm composer
điện tử làm artisan
không contêiner làm aplicativo, Voce esteja se conectando como um Usuario commum e que esteja không diretório correto.
Passo 4 - Configurando os arquivos de configuração do Nginx e os arquivos de Donjo do banco de dados
Ao criar ambientes de desenvolvimento com o Docker Soạn giả, com thường xuyênência, tôi cần thiết phải có compartilhar os arquivos de configuração ou de inicialização com os contêineres de serviço, para assim configurar ou inicializar esses serviços. Essa práticaosystemita fazer alterações nos arquivos de configuração para ajustar seu ambiente enquanto estiver desenvolvendo o aplicativo.
Agora, vamos Defr uma pasta com os arquivos que serão usados para configurar e inicializar nossos contêineres de serviço.
Para configurar o Nginx, compartilharemos um arquivo travellist.conf
que configurará como o aplicativo será atendido. Crie a pasta docker-compos docker-compose/nginx
com:
- mkdir -p docker-compose/nginx
Abra um novo arquivo chamado travellist.conf
, dentro desse diretório:
- nano docker-compose/nginx/travellist.conf
Copie a seguinte configuração do Nginx para aquele arquivo:
server { listen 80; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } }
Esse arquivo irá configurar o Nginx para escutar na porta 80
e usar o index.php
como a página de índice padrão. Ele Defrá o diretório base como /var/www/public
e, em seguida, configurará o Nginx para usar o serviço app
na porta 9000
para processar os arquivos *.php
.
Salve e feche o arquivo quando terminar de editar.
Para configurar o banco de dados do MySQL, compartilharemos um banco de dados de Donjo que será importado quando o contêiner cho inicializado. Esta é uma característica fornecida pela imagem do MySQL 5.7 , que usaremos naquele contêiner.
CRIE uma nova pasta para SEUS arquivos de inicialização làm MySQL dentro da pasta docker-compose
:
- mkdir docker-compose/mysql
Abra um novo arquivo .sql
:
- nano docker-compose/mysql/init_db.sql
Hỡi arquivo de Tuyệt vọng do MySQL se baseia không có banco de dados que configuramos em nosso guia do Laravel em LEMP . Ele criará uma nova tabela chamada places
. Então, ele preencherá a tabela com um affunto de exelos de localidade.
Adicione o havedigo a seguir ao arquivo:
DROP TABLE IF EXISTS `places`; CREATE TABLE `places` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `visited` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `places` (name, visited) VALUES ('Berlin',0),('Budapest',0),('Cincinnati',1),('Denver',0),('Helsinki',0),('Lisbon',0),('Moscow',1),('Nairobi',0),('Oslo',1),('Rio',0),('Tokyo',0);
A tabela places
contém três campos: id
, name
e visited
. O campo visited
é um sinalizador useizado para Idificar os lugares que ainda não foram visitados . Sinta-se à vontade para modificar os exelos de localidade ou incluir novos locais. Salve e feche o arquivo quando terminar.
Terminamos de configurar o Dockerfile do aplicativo e os arquivos de configuração de serviço. Em seguida, configuraremos o Docker Soạn para usar esses arquivos ao criar nossos serviços.
Passo 5 - Criando um ambiente multicontêiner com o Docker Compose
O Docker Soạn permite a criação de ambientes multicontêiner para os aplicativos em executeução no Docker. Ele usa as Defções de serviço para compilar ambientes totalmente personalizáveis com vários contêineres que podem compartilhar red e volume de dados. Isso permite uma integrationção perfeita entre os các thành phần làm aplicativo.
Para configurar nossas definições de SERVICO, criaremos um novo arquivo chamado docker-compose.yml
. Esse arquivo fica normalmente localizado na raiz da pasta do aplicativo. Ele định nghĩa seu ambiente em contêiner, incluindo as imagens base que você usará para compilar seus contêineres e como seus serviços irão interagir.
Vamos definir Três Servicos diferentes em nosso arquivo docker-compose.yml
: app
, db
e nginx
.
O serviço app
compilará uma imagem chamada travellist
, com base no Dockerfile que criamos anteriormente. O contêiner Defdo por esse serviço Operatingutará um servidor php-fpm
para analisar o código PHP e enviará os resultados de volta para o serviço do nginx
, o Qual estará em executiveução em um contêiner splitdo. O serviço mysql
xác định ô contêiner que executeuta um servidor do MySQL 5.7. Nosso Servicos irão compartilhar uma Conexao de Ponte de Rede chamada travellist
.
Os arquivos do aplicativo serão sincronizados nos serviços do app
e do nginx
através de monticadas . As mo monomens bind são úteis em ambientes de desenvolvimento porque elas levam em conta um desempenho sincronizado bidirecional entre o computador host e os contêineres.
CRIE um novo arquivo docker-compose.yml
na raiz da mì ống làm aplicativo:
- nano docker-compose.yml
Um arquivo típico do docker docker-compose.yml
compos.yml começa com uma Defção de versão, seguido de um nó de services
, sob o Qual todos os serviços são Defdos. Khi thiết kế lại compartilhadas são geralmente chắc chắn không có arquivo desse cuối cùng.
Para começar, COPIE este Código soạn sẵn para o seu arquivo docker-compose.yml
:
version: "3.7" services: networks: travellist: driver: bridge
Agora, vamos editar o it de services
para incluir os serviços app
, db
e nginx
.
O app
serviço
O serviço app
configurará um contêiner chamado travellist-app
. Ele compila uma nova imagem làm Docker com cơ sở em um Dockerfile - localizado không mesmo Caminho que o arquivo docker-compose.yml
. A nova imagem será salva localmente sob o nome travellist
.
Embora o diretório base que está sendo atendido como o aplicativo esteja localizado no contêiner do nginx
, também Preisamos dos arquivos do aplicativo em algum lugar dentro do contêiner de app
, para que Obamos executive tarefas de linha de comando com a fertisana Laravel.
COPIE một seguinte definição de SERVICO tiếng nấc seu it de services
, dentro làm arquivo docker-compose.yml
:
app: build: args: user: sammy uid: 1000 context: ./ dockerfile: Dockerfile image: travellist container_name: travellist-app restart: unless-stopped working_dir: /var/www/ volumes: - ./:/var/www networks: - travellist
Essas configurações fazem o seguinte:
-
build
: esta configuração diz ao Docker Compose para compilar uma imagem local para o serviçoapp
, usando o caminho especificado (contexto) eo Dockerfile para obter toolsções. Os argumentosuser
euid
são injetados không Dockerfile para personalizar os comandos de Criação de Usuario không momento da compilação. -
image
: o nome que será usado para a imagem que está sendo criada. -
container_name
: xác định o nome do contêiner desse serviço. -
restart
: semper reinicia, a menos que o serviço seja interrompido. -
working_dir
: định nghĩa o diretório padrão para esse serviço como/var/www
. -
volumes
: cria um volume compartilhado que sincronizará o Conteúdo do diretório atual para o/var/www
, dentro do contêiner. Lưu ý que esse não é o seu diretório raiz, uma vez que ele ficará no contêinernginx
. -
networks
: define esse SERVICO para usar uma Rede chamadatravellist
.
O serviço db
O serviço db
usa uma imagem de MySQL 5.7 previamente compilada do Docker Hub. Como o Docker Soạn carrega automaticamente os arquivos da variável .env
, localizados no mesmo diretório que o arquivo docker docker-compose.yml
compos.yml, podemos obter nossas configurações de banco de dados do .env
do Laravel que criamos em passo anterior.
Inclua a seguinte Defção de serviço no it de seus services
, logo após o serviço app
:
db: image: mysql:5.7 container_name: travellist-db restart: unless-stopped environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_USER: ${DB_USERNAME} SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - ./docker-compose/mysql:/docker-entrypoint-initdb.d networks: - travellist
Essas configurações fazem o seguinte:
-
image
: định nghĩa một imagem do Docker que deve ser usada para este contêiner. Neste caso, estamos usando uma imagem MySQL 5.7 do Docker Hub. -
container_name
: define o nome làm contêiner para este SERVICO:travellist-db
. -
restart
: semper reinicia este serviço, a menos que ele seja explicitamente interrompido. -
environment
: định nghĩa là variáveis de ambiente no novo contêiner. Estamos usando valores obtidos a partir do.env
do Laravel para configurar nosso serviço do MySQL, o Qual irá criar - automaticamente - um novo banco de dados e um usuário, com base nas variáveis de ambiente fornecidas. -
volumes
: cria um volume para compartilhar um arquivo de Despejo de banco de dados.sql
que será usado para inicializar o banco de dados do aplicativo. A imagem do MySQL importará automaticamente os arquivos.sql
colocados no diretório/docker-entrypoint-initdb.d
dentro do contêiner. -
networks
: define esse SERVICO para usar uma Rede chamadatravellist
.
O serviço nginx
O serviço nginx
usa uma imagem do Nginx previamente compilada sobre o Alpine , uma Distributionuição de Linux leve. Ela cria um contêiner chamado travellist-nginx
e usa a Defção de ports
para criar um redirecionamento da porta 8000
- no sistema host - para a porta 80
- dentro do contêiner.
Inclua a seguinte Defção de serviço no it de seus services
, logo após o serviço db
:
nginx: image: nginx:1.17-alpine container_name: travellist-nginx restart: unless-stopped ports: - 8000:80 volumes: - ./:/var/www - ./docker-compose/nginx:/etc/nginx/conf.d networks: - travellist
Essas configurações fazem o seguinte:
-
image
: định nghĩa một imagem do Docker que deve ser usada para este contêiner. Neste caso, estamos usando a imagem do Alpine Nginx 1.17. -
container_name
: define o nome làm contêiner para este SERVICO: travellist-nginx. -
restart
: semper reinicia este serviço, a menos que ele seja explicitamente interrompido. -
ports
: định nghĩa ô redirecionamento de porta que permitirá o acesso externo através da porta8000
para o servidor Web em executeução na porta80
, dentro do contêiner. -
volumes
: cria dois volume compartilhados. O primeiro sincronizará o Conteúdo do diretório atual para o/var/www
, dentro do contêiner. Dessa forma, quando fizer alterações locais nos arquivos do aplicativo, elas serão Feedbacktidas quickamente no aplicativo que está sendo atendido pelo Nginx, dentro do contêiner. O segundo volume garantirá que o nosso arquivo de configuração do Nginx, localizado em docker-composdocker-compose/nginx/travellist.conf
, seja copiado para a pasta de configuração do Nginx do contêiner. -
networks
: define esse SERVICO para usar uma Rede chamadatravellist
.
Arquivo docker docker-compose.yml
compo.yml finalizado
Nosso arquivo docker-compose.yml
finalizado ficará com esta aparência:
version: "3.7" services: app: build: args: user: sammy uid: 1000 context: ./ dockerfile: Dockerfile image: travellist container_name: travellist-app restart: unless-stopped working_dir: /var/www/ volumes: - ./:/var/www networks: - travellist db: image: mysql:5.7 container_name: travellist-db restart: unless-stopped environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_USER: ${DB_USERNAME} SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - ./docker-compose/mysql:/docker-entrypoint-initdb.d networks: - travellist nginx: image: nginx:alpine container_name: travellist-nginx restart: unless-stopped ports: - 8000:80 volumes: - ./:/var/www - ./docker-compose/nginx:/etc/nginx/conf.d/ networks: - travellist networks: travellist: driver: bridge
Certifique-se de salvar o arquivo quando terminar.
Passo 6 - Executando o aplicativo com o Docker Compose
Agora, usaremos os comandos làm docker-compose
para compilar một imagem làm aplicativo e executar os Servicos que especificamos em Nossa configuração.
Biên dịch imagem do app
com o seguinte comando:
- docker-compose build app
Esse comando pode levar alguns minutos para completar. Você verá um resultado tương tự một este:
OutputBuilding app Step 1/11 : FROM php:7.4-fpm ---> fa37bd6db22a Step 2/11 : ARG user ---> Running in f71eb33b7459 Removing intermediate container f71eb33b7459 ---> 533c30216f34 Step 3/11 : ARG uid ---> Running in 60d2d2a84cda Removing intermediate container 60d2d2a84cda ---> 497fbf904605 Step 4/11 : RUN apt-get update && apt-get install -y git curl libpng-dev libonig-dev ... Step 7/11 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer ---> e499f74896e3 Step 8/11 : RUN useradd -G www-data,root -u $uid -d /home/$user $user ---> Running in 232ef9c7dbd1 Removing intermediate container 232ef9c7dbd1 ---> 870fa3220ffa Step 9/11 : RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user ---> Running in 7ca8c0cb7f09 Removing intermediate container 7ca8c0cb7f09 ---> 3d2ef9519a8e Step 10/11 : WORKDIR /var/www ---> Running in 4a964f91edfa Removing intermediate container 4a964f91edfa ---> 00ada639da21 Step 11/11 : USER $user ---> Running in 9f8e874fede9 Removing intermediate container 9f8e874fede9 ---> fe176ff4702b Successfully built fe176ff4702b Successfully tagged travellist:latest
Quando a compilação estiver concluída, você poderá executive o ambiente em segundo plano com:
- docker-compose up -d
OutputCreating travellist-db ... done Creating travellist-app ... done Creating travellist-nginx ... done
Isso executeutará seus contêineres em segundo plano. Para exibir Informações sobre o estado de seus serviços ativos, thực thi:
- docker-compose ps
Você verá um resultado como este:
Output Name Command State Ports ------------------------------------------------------------------------------- travellist-app docker-php-entrypoint php-fpm Up 9000/tcp travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp travellist-nginx nginx -g daemon off; Up 0.0.0.0:8000->80/tcp
Agora, seu ambiente está funcionando! Porém, ainda Preisaremos executive alguns comandos para concluir a configuração do aplicativo. Você pode usar o comando docker docker-compose exec
compile executive para executive comandos nos contêineres de serviço, como um ls -l
para exibir Informações detalhadas sobre os arquivos no diretório do aplicativo:
- docker-compose exec app ls -l
Outputtotal 256 -rw-rw-r-- 1 sammy 1001 738 Jan 15 16:46 Dockerfile -rw-rw-r-- 1 sammy 1001 101 Jan 7 08:05 README.md drwxrwxr-x 6 sammy 1001 4096 Jan 7 08:05 app -rwxr-xr-x 1 sammy 1001 1686 Jan 7 08:05 artisan drwxrwxr-x 3 sammy 1001 4096 Jan 7 08:05 bootstrap -rw-rw-r-- 1 sammy 1001 1501 Jan 7 08:05 composer.json -rw-rw-r-- 1 sammy 1001 179071 Jan 7 08:05 composer.lock drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 config drwxrwxr-x 5 sammy 1001 4096 Jan 7 08:05 database drwxrwxr-x 4 sammy 1001 4096 Jan 15 16:46 docker-compose -rw-rw-r-- 1 sammy 1001 1015 Jan 15 16:45 docker-compose.yml -rw-rw-r-- 1 sammy 1001 1013 Jan 7 08:05 package.json -rw-rw-r-- 1 sammy 1001 1405 Jan 7 08:05 phpunit.xml drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 public -rw-rw-r-- 1 sammy 1001 273 Jan 7 08:05 readme.md drwxrwxr-x 6 sammy 1001 4096 Jan 7 08:05 resources drwxrwxr-x 2 sammy 1001 4096 Jan 7 08:05 routes -rw-rw-r-- 1 sammy 1001 563 Jan 7 08:05 server.php drwxrwxr-x 5 sammy 1001 4096 Jan 7 08:05 storage drwxrwxr-x 4 sammy 1001 4096 Jan 7 08:05 tests -rw-rw-r-- 1 sammy 1001 538 Jan 7 08:05 webpack.mix.js
Agora, vamos Operating o composer install
para instalar as dependências do aplicativo:
- docker-compose exec app composer install
Você verá um resultado como este:
OutputLoading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 85 installs, 0 updates, 0 removals - Installing doctrine/inflector (1.3.1): Downloading (100%) - Installing doctrine/lexer (1.2.0): Downloading (100%) - Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%) - Installing erusev/parsedown (1.7.4): Downloading (100%) - Installing symfony/polyfill-ctype (v1.13.1): Downloading (100%) - Installing phpoption/phpoption (1.7.2): Downloading (100%) - Installing vlucas/phpdotenv (v3.6.0): Downloading (100%) - Installing symfony/css-selector (v5.0.2): Downloading (100%) … Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: facade/ignition Discovered Package: fideloper/proxy Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully.
A última coisa que Preisamos fazer - antes de testar o aplicativo - é gerar uma chave única para o aplicativo com một artisan
, một ferramenta de linha de comando do Laravel. Esta chave é usada para criptografar sessões de usuário e outros dados confidenciais:
- docker-compose exec app php artisan key:generate
OutputApplication key set successfully.
Agora, vá até seu navegador e acesse o nome de domínio ou endereço IP do seu servidor na porta 8000:
http://server_domain_or_IP:8000
Você verá uma página como esta:
Você pode usar o comando logs
para Verificar os registerros gerados bởi seus serviços:
- docker-compose logs nginx
Attaching to travellist-nginx travellist-nginx | 192.168.160.1 - - [23/Jan/2020:13:57:25 +0000] "GET / HTTP/1.1" 200 626 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" travellist-nginx | 192.168.160.1 - - [23/Jan/2020:13:57:26 +0000] "GET /favicon.ico HTTP/1.1" 200 0 "http://localhost:8000/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" travellist-nginx | 192.168.160.1 - - [23/Jan/2020:13:57:42 +0000] "GET / HTTP/1.1" 200 626 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" …
Se quiser pausar seu ambiente do Docker Soạn ao mesmo tempo que mantém o estado de todos seus serviços, thực hiện:
- docker-compose pause
OutputPausing travellist-db ... done Pausing travellist-nginx ... done Pausing travellist-app ... done
Em seguida, você poderá retomar os seus serviços com:
- docker-compose unpause
OutputUnpausing travellist-app ... done Unpausing travellist-nginx ... done Unpausing travellist-db ... done
Para fechar seu ambiente do Docker Soạn e remove todos os seus contêineres, chỉnh sửa lại các tập, thực thi:
- docker-compose down
OutputStopping travellist-nginx ... done Stopping travellist-db ... done Stopping travellist-app ... done Removing travellist-nginx ... done Removing travellist-db ... done Removing travellist-app ... done Removing network travellist-laravel-demo_travellist
Para obter um panorama de todos os comandos do Docker Soạn, xác minh một Referenceência da linha de comando do Docker Compose .
Conclusão
Neste guia, configuramos um ambiente do Docker com três contêineres, usando o Docker Soạn para Defr nossa Infraestrutura em um arquivo YAML.
A Partr deste ponto, você poderá trabalhar no seu aplicativo do Laravel sem a needidade de instalar e configurar um servidor Web local para desenvolvimentos e testes. Além disso, você trabalhará com um ambiente descartável e que pode ser securemente replicado e Distribuído, o que pode ser útil ao desenvolver seu aplicativo e ao passar para um ambiente de produção.
Các tin liên quan
Cách tạo ứng dụng Node.js với Docker [Quickstart]2020-02-06
Cách cài đặt Docker Compose trên Debian 10
2020-01-30
Cách chứa một ứng dụng Laravel để phát triển với Docker Compose trên Ubuntu 18.04
2020-01-23
Cách chứa một ứng dụng Laravel để phát triển với Docker Compose trên Ubuntu 18.04
2020-01-23
Lưu trữ một ứng dụng Ruby on Rails để phát triển với Docker Compose
2019-12-27
Làm việc với nhiều container bằng Docker Compose
2019-12-20
Cách sử dụng Plugin Docker cho Visual Studio Code
2019-12-12
Cách sử dụng Ansible để cài đặt và thiết lập Docker trên Ubuntu 18.04
2019-12-05
Cách tạo ứng dụng Django và Gunicorn với Docker
2019-10-25
Cách thiết lập Flask với MongoDB và Docker
2019-10-11