LINUX.ORG.RU

Как упаковать в docker?

 


0

1

Здравствуйте! Пробую устроиться на вакансию junior php разработчик, все сделал, кроме одного, в ТЗ указано, что надо упаковать решение (сайт с mysql) в docker со скриптом разворачивания БД и сайта.

Никогда до этого не работал с docker, как я понял, надо либо через docker-compose, либо через Dockerfile это делать, как это правильно сделать?


Джун пхпшник должен уметь деплоить приложение в прод на докере? Ничего себе времена изменились!

Alve ★★★★★
()
Ответ на: комментарий от vvn_black

Лорчую. Скоро спрашивать начнут как какать гугл открыть.

ololoid ★★★★
()
Ответ на: комментарий от Alve

С одной стороны ты прав, с другой, если товарищ не осилил погуглить такую тривиальщину и тупо покопипастить, он даже на позиции джуна бесполезен.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от Alve

А должен только зарплату получать?

деплоить приложение в прод

Ну прям в прод пускать конечно нельзя, но уметь должен.

ox55ff ★★★★★
()

Для каждой службы ты создаёшь отдельный контейнер. В твоём случае это, вероятно, будет два контейнера - один с mysql, один с php и твоими исходниками.

В docker hub есть официальные образы, на основе которых тебе нужно будет сделать контейнеры. В БД наверное надо будет добавить скрипты, которые создадут структуру БД, ну или можно использьовать образ как есть, а структуру создавать уже в приложении. А второй образ делаешь на основе PHP-образа и туда в нужные места копируешь файлы своего сайта.

Старайся, чтобы весь «скрипт разворачивания» состоял из docker-compose -f xxx.compose up, а остальное работало само.

Теоретически третий контейнер ещё может быть reverse proxy, например nginx, который будет отдавать статику и перенаправлять запросы на второй контейнер. Но вряд ли тебе это надо.

Legioner ★★★★★
()
Ответ на: комментарий от Alve

Не деплоить. Сейчас практически все разработчики держат окружение в контейнерах. Так что это мастхэв для любого грэйда.

anonymous
()

а в чем проблема?

создаешь файл Dockerfile

если нужен nginx кидаешь в него

FROM nginx
COPY static-html-directory /usr/share/nginx/html

если нужен Go

FROM golang:1.13-alpine3.10 AS build-env

#тут ставишь зависимости 
RUN apk --no-cache add build-base git

#Setup 
COPY . /src/
WORKDIR /src/

можешь сразу FROM ubuntu взять, FROM php ищи тут базовый образ https://hub.docker.com/ и делай по себя

лучше все в один image не кидать, взять готовый образ mysql + свой собранный с go,

потом создаешь docker-compose.yaml там два сервиса сшиваешь.

sap78
()

Люди в этой индустрии получают такие (и при этом сравнительно с затратами низкие) зарплаты не потому, что бегут на лор или стэковерфлоу за советами, а потому что скрючившись сидят и читают мануалы, или хотя бы на собесе успешно притворяются (до 1-2ой зарплаты).

https://github.com/docker/labs/blob/master/beginner/chapters/webapps.md#23-create-your-first-image https://docs.docker.com/get-started/ https://docs.docker.com/compose/gettingstarted/

Советую еще по диагонали синтаксис (ba)sh и YAML изучить, раз такое дело. Не раз еще пригодится

mazdai ★★★
()
Ответ на: комментарий от Harald

Как же раньше сайты-то на пхп делали, и они работали без докера

Разворачивая среду разработки, с зоопарком версий. Сейчас можно сразу начинать кодить, зоопарк контейнеров сам заведётся.

vvn_black ★★★★★
()
Ответ на: комментарий от Alve

додиков разных много с неадекватными требованиями

tz4678 ★★
()
Ответ на: комментарий от vvn_black

нет. вообще никаких проблем не было. я сидел с винды, качал хамп, там настраивать ничего особо не надо, говнокодил в sublime text, а до него в разных webstornm, phpstorm, netbeans, а как все готово было просто копировал файлы через ftp. системами версий типа гит тоже никто не пользовался. то было время шаред хостингов, сейчас же даже говновизитки на выделенных серверах поднимают, тут ес-но без докера никуда

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от vvn_black

проблемы с версионностью присущи всяким питонам и ноде. у пхп всегда была обратная совместимость

tz4678 ★★
()
Ответ на: комментарий от sap78

я бы советовал использовать какой-нибудь образ slim, который не тащит с собой половину линукса, а использует библиотеки хоста

tz4678 ★★
()

Всем спасибо большое за фидбек, в итоге я написал такой Dockerfile, мб кому-нибудь пригодится.

FROM ubuntu:latest
ENV DEBIAN_FRONTEND noninteractive
EXPOSE 80
COPY . /app
RUN apt-get update &&\
    apt-get install -y apache2 &&\
    apt-get install -y php &&\
    apt-get install -y mysql-server &&\
    apt-get install -y php-mysqli &&\
    apt-get install -y systemctl &&\
    usermod -d /var/lib/mysql/ mysql &&\
    service mysql start &&\
    rm /var/www/html/index.html &&\
    mysql -e "CREATE DATABASE brk;" &&\
    mysql -e "CREATE USER 'pthon'@'%' IDENTIFIED BY '123456';" &&\
    mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'pthon'@'%' WITH GRANT OPTION;" &&\
    mysql -e "FLUSH PRIVILEGES;" &&\
    mysql brk < /app/dump/brk.sql &&\
    cp -r /app/www/* /var/www/html
CMD service mysql start && service apache2 start && tail -F /var/log/mysql/error.log

    
pthon
() автор топика
Ответ на: комментарий от WitcherGeralt

Все джуны говнокод пишут

Починил, не благодари.

Nervous ★★★★★
()
Ответ на: комментарий от tz4678

который не тащит с собой половину линукса, а использует библиотеки хоста

Разве что хост тоже автоматически разворачиваемая виртуалка.

Nervous ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.