Build docker image s custom prikazom

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
lepermessiah
Sponzor fóra gold
Sponzor fóra gold
Príspevky: 2704
Dátum registrácie: Št 30. Dec, 2010, 02:41
Bydlisko: ZV

Build docker image s custom prikazom

Príspevok od používateľa lepermessiah »

Caute,

potrebujem si upravit git clone image pre Drone CI, lebo dementny router neobidem a teda musim do clone stepu dostat IPcku/hostname do /etc/hosts.

Momentalne mam tento Dockerfile, je to kopia povodneho image, v nom len pridavam skript hosts a nasledne ho spustam.

Kód: Vybrať všetko

FROM alpine:3.12
RUN apk add --no-cache ca-certificates git git-lfs openssh curl perl aws-cli sudo

ADD posix/* /usr/local/bin/

ADD scripts/hosts /hosts

RUN chmod +x /hosts
CMD ["sudo /hosts"]

ENTRYPOINT ["/usr/local/bin/clone"]
V hosts mam toto:

Kód: Vybrať všetko

echo '192.168.0.254 gitea.local' >> /tmp/hosts
cat /tmp/hosts >> /etc/hosts
.. ale neviem preco, do hosts sa to nezapise, ked ale vojdem do (zatial) beziaceho kontajnera a pustim rucne /hosts, IPcka sa mi prida. Kedze nic nevidim v /tmp, predpokladam, ze skript sa vobec nespusti.

Skusil som aj namiesto CMD pustit ENTRYPOINT ["/hosts && /usr/local/bin/clone"] ale vysledok rovnaky, kde robim chybu pls?
Spoiler: ukázať
[Home]
[NAS]
Synology DS920+ / 12GB RAM / 4x IronWolf ST6000VN001 R.6 / 2x GigaByte GSM2NE3512GNTD + 2.5G ethernet
[Laptop]
Lenovo Yoga X1 gen.2 / 20JES0AJ00 + Samsung 970 EVO 1TB
[LCD]
Dell U2913WM
[Peripherals]
Topping DX3 Pro | Wavemaster Mx-3 | Superlux HD-662F | Logitech G815 + Kensington Slimblade Pro
[Work]
[Laptop]
Lenovo Legion 5 Pro / 82JQ00C3CK | 5800H + 2x Samsung 970 EVO Plus 2TB + 64GB RAM
[LCD]
Dell U4320Q + blink(1)
[Peripherals]
Sabaj D2 | AKG K72 | Logitech G413 Silver + Kensington Slimblade
LordKJ
Sponzor fóra gold
Sponzor fóra gold
Príspevky: 7744
Dátum registrácie: Po 28. Feb, 2011, 11:49
Bydlisko: Bratislava

Re: Build docker image s custom prikazom

Príspevok od používateľa LordKJ »

no ten Dockerfile realne spusti

Kód: Vybrať všetko

exec /usr/local/bin/clone sudo /hosts
co asi nie je prave to co by si chcel dosiahnut

problem je aj to, ze tvoj hosts file nepise, ze je to skript ak to chces spustit tak by si to mal prefixovat

Kód: Vybrať všetko

sh hosts
a asi by bolo fajn tomu aj pridat extension nech v tom nie je bordel + shebang line

ked vojdes do kontajnera tak predpokladam, ze sa ti spusti nejaky shell
Naposledy upravil/-a LordKJ v Št 23. Feb, 2023, 23:51, upravené celkom 1 krát.
Používateľov profilový obrázok
lepermessiah
Sponzor fóra gold
Sponzor fóra gold
Príspevky: 2704
Dátum registrácie: Št 30. Dec, 2010, 02:41
Bydlisko: ZV

Re: Build docker image s custom prikazom

Príspevok od používateľa lepermessiah »

Dik za feedback, ono v hosts som mal "#!/bin/sh" len som to sem nekopiroval

Ako som sa docital v dokumentacii prave, tak ENTRYPOINT mi prepisuje CMD a zapis pre ENTRYPOINT som mal zly, spravne je to takto a uz mi to funguje, aj ked teda este nie uplne, ale uz mi to aspon kopiruje hosts :D len to nespusta clone :rofl: :

Kód: Vybrať všetko

ENTRYPOINT exec sudo /hosts && /usr/local/bin/clone
EDIT: tak nakoniec takto a funguje to ..

Kód: Vybrať všetko

ENTRYPOINT ["/bin/sh", "-c", "/hosts && /usr/local/bin/clone"]
Spoiler: ukázať
[Home]
[NAS]
Synology DS920+ / 12GB RAM / 4x IronWolf ST6000VN001 R.6 / 2x GigaByte GSM2NE3512GNTD + 2.5G ethernet
[Laptop]
Lenovo Yoga X1 gen.2 / 20JES0AJ00 + Samsung 970 EVO 1TB
[LCD]
Dell U2913WM
[Peripherals]
Topping DX3 Pro | Wavemaster Mx-3 | Superlux HD-662F | Logitech G815 + Kensington Slimblade Pro
[Work]
[Laptop]
Lenovo Legion 5 Pro / 82JQ00C3CK | 5800H + 2x Samsung 970 EVO Plus 2TB + 64GB RAM
[LCD]
Dell U4320Q + blink(1)
[Peripherals]
Sabaj D2 | AKG K72 | Logitech G413 Silver + Kensington Slimblade
LordKJ
Sponzor fóra gold
Sponzor fóra gold
Príspevky: 7744
Dátum registrácie: Po 28. Feb, 2011, 11:49
Bydlisko: Bratislava

Re: Build docker image s custom prikazom

Príspevok od používateľa LordKJ »

cmd by sa mal praveze appendovat za entrypoint

teraz ti to ide lebo tato forma entrypointu spusta shell // edit: vidim, ze uz si na to prisiel aj sam:)

blbne mi lokalne docker tak to neviem efektivne skusat :D

najistejsie by bolo spravit cely entrypoint skript ako napr. https://docs.docker.com/develop/develop ... entrypoint , kde si to najprv appendnes do hosts a nasledne replacnes shell za ten clone

Návrat na "Programovanie"