Dmitriy
Имхо, тогда нужно лезть глубже, т.е. не пользоваться оберткой http.Handler и тогда можно будет копипастить со всем-всем. Однако, затраты на реализацию, имхо, будут сложнее, чем простой io.Copy + парсинг хидеров
Dmitry
OK, спасибо.
Максим
Кто-то docker golang использовал?
Максим
Кто-то docker golang использовал?
ты, наверное, хотел сказать moby golang?
Максим
а так, я юзаю
Максим
ты, наверное, хотел сказать moby golang?
я так и не въехал, переименовали ли Docker в Moby или это отдельная тема какая-то
Максим
а так, я юзаю
вопрос в следующем. Создаю контейнер, прокидываю, скачиваю библиотеки, делаю go install. Вроде все собирается, но запустить не удается
Максим
для запуска лучше собирать образ на scratch. Добавив туда скомпилированную программу и указав entrypoint
Максим
а в чем отличие scretch? пока не смотрел Dockerfile
Aleksandr
а в чем отличие scretch? пока не смотрел Dockerfile
это просто голый образ без всего. образ го достаточно тяжелый, чтобы с его помощью дистрибьютить апп
Максим
@zelenin Так. С помощью него создаю контейнер. И дальше выполняю те же команды что я указывал в другом чате?
Максим
судя по документации прокидываем все в /go/src/app, затем go get -v app и после go install -v app
Aleksandr
go build -o app
Aleksandr
app билдишь в диру на хост
Aleksandr
потом с хоста забираешь в другой образ
Максим
то есть получается билдим в одном контейнере, а запускаем в другом?
Aleksandr
да
Aleksandr
docker run —rm -v "$PWD":/go -w /go/src -e CGO_ENABLED=0 golang go build -o "app"
Aleksandr
что-то такое
Максим
да
для билда используем golang:1.8, а для запуска golang:1.8-stretch?
Aleksandr
ну что значит запускаем? дистрибьютмм на продакшн
Aleksandr
для билда используем golang:1.8, а для запуска golang:1.8-stretch?
для запуска scratch - это просто голый образ, не го. я использую alpine - linux c небольшим обвесом на 5 мб
Максим
@zelenin пример организации сего есть?))
Aleksandr
@zelenin пример организации сего есть?))
у меня свой registry, так что подставь правильные названия образов docker run --rm -v "$PWD":/go -w /go/src ${registryHost}/go:1.8.0-2 go build -o "../build/app" Dockerfile: FROM docker.****:443/alpine:3.5-1 MAINTAINER Aleksandr Zelenin <aleksandr@zelenin.me> ENV PATH /app:$PATH RUN mkdir -p /app COPY app /app WORKDIR /app CMD ["app"]
Максим
а официальный golang:1.8-alpine не подошел?
Aleksandr
а официальный golang:1.8-alpine не подошел?
это go на базе alpine, а нам go не нужен для запуска бинарника. а весит оно 200 мб вроде против 5
Aleksandr
то есть билдить им можно и нужно, а класть бинарник уже в голый alpine/scratch
Максим
Сейчас попробую
Максим
@zelenin спасибо
Максим
и можно всё сократить до: FROM scratch COPY ./app / ENTRYPOINT ["/app"]
Максим
@zavitaev
Aleksandr
и можно всё сократить до: FROM scratch COPY ./app / ENTRYPOINT ["/app"]
в корень мусорить не хочется, хоть и пох.
Максим
Aleksandr
краткость сестра таланта
более длинно, не потому что хочется, а потому что есть обоснование. писать более кратко, забив на обоснование, нельзя.
Nikolay
ребят можно вопрос по goglang от джетбрейнов задать? это идешка ихняя
Nikolay
Вот что это за линяя по середине(почти) и зачем она нужна, не впервый раз встречаю такую штуку
Cyril
нужно писать код не пересекая её
nvkv
слушай его
Oleg
Если пересечь - в мире умрет один щенок
Nikolay
🤔защита от былокодинга?
nvkv
это рулер ограничивающий длину строки
Nikolay
он не ограничивает
Nikolay
я пробовал
nvkv
потому что, судя по всему, у тебя огромный монитор и отличное зрение
Nikolay
обычный фулхд
Konstantin
Реализовал авторизацию в либо по ВК, теперь можно поделиться и услышать критику: https://github.com/SolidlSnake/easyvk-go
Oleg
он не ограничивает
Это просто метка для удобства. Считается, что если строки не длиннее 80 символов, код легче читается.
nvkv
обычный фулхд
ну вот у меня 4k
nvkv
код выглядит так
nvkv
Aleksandr
Вот что это за линяя по середине(почти) и зачем она нужна, не впервый раз встречаю такую штуку
это ограничитель на 80 символов - кол-во символов в консоли в дремучие времена. теперь как бест практайс в код стайле
nvkv
прикинь теперь число символов, которое влезет на экран у тебя и у меня
Nikolay
Nikolay
вим
nvkv
и вот чтобы мы с тобой не подрались редактируя один и тот же код, пацаны придумали правило
nvkv
строка должна быть не длиннее 80 символов
nvkv
чтобы она влезала даже на экран утюга
Nikolay
всё догнал, а как нить её задействовать нельзя? что бы она не только визуальной была но и функциональной
Nikolay
а том ало ли что
Nikolay
пропрет что нить нагошить
nvkv
Нащот этой ИДЕ не знаю
Nikolay
или пришлют код с длиной строки в 2048 сиоволов
nvkv
но много где можно красить строчку красной, если она вылезла
nvkv
честно говоря, я почти везде на своих проектах ставлю рулер не на 80, а на 120 символов
nvkv
проявляю слабость, так сказать
nvkv
некоторые языки в 80 символов просто хрен упихнёшь
Nikolay
че там в гошечке то новго глобального? а то я подзавис на 1.3 версии а щас ставил уже 1.8.1
Aleksandr
на самом деле это чисто легаси правило, т.к. большинство иде и редакторов имеют софт переносы и длинная строка не создает неудобства (не требует промотки экрана)
Dmitry
Дайте, пожалуйста, ссылку на быстрый json-маршаллер.
Илья
easyjson?
Илья
https://github.com/mailru/easyjson
Dmitry
👍
Vladimir
Лучше уж разбить на пакеты и принимать первым аргументом инстанс клиента.
Vladimir
Так и тесты будет писать проще.