Как правильно выполнять много команд в Docker
хочу запустить их на докере, но вот возникла дилемма, команд то много
поискав в интернете нашел решение, создать bash скрипт, туда записать все команды
то это в докере не python надо будет устанавливать, а ubuntu, и там уже устанавливать python и все запускать, верно ?
version: '3.1'
services:
php74:
image: php:7.4
volumes:
- ./:/opt/site
container_name: php-74
working_dir: /opt/site
command: php -f /opt/site/somescript.php
php73:
image: php:7.3
volumes:
- ./:/opt/site
container_name: php-73
working_dir: /opt/site
command: php -f /opt/site/somescript.php
nginx:
...
volumes:
- ./local-back:/container/back
- ./local-front:/container/front
...
back:
...
volumes:
-./local-back:/container/back
command: тут скрипт который конфигурит бэк и запускает его
front:
...
volumes:
-./local-front:/container/front
command: тут скрипт который конфигурит фронт, собирает статику, или что он там делает..
touch /somedir/someflag
... # какая-то продолжительная последовательность инициализации
rm -f /somedir/someflag # это выполнить по успешному окончанию
sleep 5 # подождать немного пока основной контейнер инициализируется
while [ -f /somedir/someflag ];
do
sleep 1
echo 'Waiting for container x'
done;
... # старт сервисов зависимого контейнера
./nginx/sites-enabled/site1.conf:
{
listen 80;
server_name site1.example.org;
location / {
proxy_pass: http://127.0.0.1:8081;
}
}
{
listen 80;
server_name site2.example.org;
location / {
proxy_pass: http://127.0.0.1:8082;
}
}
nginx:
volumes:
- ./:/opt/site1-root
- ./config/nginx:/etc/nginx/conf.d
ports:
- "0.0.0.0:8081:80"
{
listen 80;
local / {
root /opt/site1-root;
}
}
nginx:
volumes:
- ./:/opt/site2-root
- ./config/nginx:/etc/nginx/conf.d
ports:
- "0.0.0.0:8082:80"
{
listen 80;
local / {
root /opt/site2-root;
}
}