Go
- 27 ответов
- 0 вопросов
40
Вклад в тег
x
права), что на уровне веб-сервера.$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => 'http://target.site.com/form.php',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(array(/*здесь массив параметров запроса*/))
));
$response = curl_exec($myCurl);
curl_close($myCurl);
echo "Ответ на Ваш запрос: ".$response;
docker
- это консольный интерфейс (CLI) для работы с Dockerdocker build
создает по заданному Dockerfile
образ контейнераdocker tag
присваивает указанному образу указанный тег (опция -t
для build
делает то же самое)docker pull
скачивает указанный образ из удаленного регистра на текущую машинуdocker push
заливает указанный образ в удаленный регистрdocker run
запускает новый контейнер из указанного образаdocker ps
выводит список текущих "бегущих" контейнеровdocker
не жонглирует файлами, она жонглирует образами и контейнерами, а они от нас абстрагированы Docker'ом, как что-то эфемерное. То есть выполняя комманду docker pull
Вы не скачиваете образ в ту папку, где выполняете команду, и уж точно не скачиваете какие-либо файлы. Все что Вы делаете этой командой - это скачиваете образ в локальное хранилище Docker'а, дабы Docker daemon мог запустить контейнер на основании этого образа.docker-compose
- это уже совсем другая команда. Все что она делает - это читает указанный YAML-манифест и выполняет соответствующие команды Docker. Это всего лишь позволяет декларативно указывать желаемые сценарии при работе с Docker в удобном формате. Но ни команда docker
, ни docker-compose
, не предоставляют ничего для того, чтобы транспортировать/обновлять версии Ваших манифестов где-то там. Docker, опять таки, жонглирует образами и контейнерами, не более.build:
. Таким образом docker-compose
пытается сначала собрать контейнер, вместо того, чтобы просто запустить его из образа.docker-compose.yml
под каждый env, все правильно советовали. Именно так это и задумывалось. Вы в манифесте указываете отнюдь не разные окружения (development, production), а набор контейнеров, которые должны бежать в одной связке одной логической единицей (концепция POD'ов). Ничего не запрещает делать и так, как сделали Вы, но это сродни использованию дуршлага в роли миски для еды: сегодня Вы нормально из него наворачиваете пельмени, а завтра супчик в нем уже куда-то не туда утекает.docker-compose.yml
, согласно которому контейнер перед запуском собирается из сорцов.docker build
, присваиваете ему номер версии через docker tag
и отправляете в удаленный регистр образов через docker push
.docker-compose.yml
в котором указано запускать конкретную версию образа (и никаких build). Новая версия приложения - меняем тег образа в манифесте и перезапускаем контейнеры. При выполнении docker-compose
образ автоматически скачается перед запуском, если его нет локально. Если же Вы обновили образ конкретной версии, которая уже была скачана ранее, то да, нужно выполнить docker pull
перед стартом, дабы скачать новый образ.GOMAXPROCS=1
, то мы получим однопоточный асинхронный код в Go (по умолчанию он многопоточный). Также и в C# мы можем выполнять Task'и как на одном потоке, так и на thread pool, получая аналогичные Go гарантии рантайма.