docker-compose up


docker compose up — команда, которой запускается процесс сборки и запуска контейнеров, согласно правилам в файле docker-compose.yml в текущем каталоге. Рассмотрим примеры запуска контейнеров и синтаксис файла.



docker compose up и пример запуска Docker контейнеров через docker-compose


docker compose является отдельным пакетом предназначенным для организации совместной работы нескольких контейнеров и управлении ими.

В простейшем случае отдельные контейнеры запускаются из консоли с определенными параметрами. Но чаще, используется Dockerfile

Рассмотрим запуск простого приложения в контейнере с использованием docker compose



Сначала создается Dockerfile с информацией по контейнеру


mcedit Dockerfile

FROM php:7.0-apache
COPY index.html /var/www/html
EXPOSE 80
RUN mkdir /test && echo "hello world" > /test/greeting



В нем указание на то, что за основу берется образ php:7.0-apache c Dockerhub. В контейнер копируется файл index.html из текущего каталога, снаружи открывается порт 80, пробрасывать его на хост машину будем позднее через docker-compose.


Последней строкой выполняется команда, создающая каталог и файл с добавлением в последний строки hello world

mcedit docker-compose.yml

version: '3'
services:
website:
build: .
ports:
"5001:80"



docker-compose up --build -d

Building website
Step 1/5 : FROM php:7.0-apache
—> e18e9bf71cab
Step 2/5 : COPY index.html /var/www/html
—> Using cache
—> a0d54730e1ad
Step 3/5 : EXPOSE 80
—> Using cache
—> 0aba8373a592
Step 4/5 : RUN mkdir /test && echo «hello world» > /test/greeting
—> Using cache
—> 9a54369708fc
Step 5/5 : VOLUME /test
—> Using cache
—> 8218d0e69365
Successfully built 8218d0e69365
Successfully tagged 1_website:latest
Starting 1_website_1 …
Starting 1_website_1 … done



Контейнер успешно создан и запущен, в выводе docker ps его можно увидеть и в него можно зайти

docker ps | grep php

acb5f4b93aa2 1_website «docker-php-entrypoi…» About an hour ago Up About an hour 0.0.0.0:5001->80/tcp 1_website_1



Попасть внутрь контейнера можно с указанием оболочки /bin/bash

docker exec -it acb5f4b93aa2 /bin/bash



Внутри контейнера можно выполнить команду ls и увидеть файл index.html, который был скопирован с хост машины командой COPY из Dockerfile

root@acb5f4b93aa2:/var/www/html# ls

index.html



На хост машине можно теперь увидеть запущенный на порту 5001 сервис, если обратиться по публичному IP адресу на порт 5001 будет отображено содержимое index.html в Docker контейнере

docker compose up



Запущенная служба отображается в выводе netstat

netstat -nltp | grep 5001

tcp6 0 0 :::5001



Далее можно настроить проксирование при помощи Nginx на порт 5001 для какого-то определенного доменного имени.

Сказать спасибо