Ma te whakamahi i nga waahi-maha ki te hanga whakaahua matapihi
Kia ora katoa! Ko Andrey toku ingoa, a kei te mahi ahau hei miihini DevOps i Exness i roto i te roopu whanaketanga. Ko taku mahi matua e pa ana ki te hanga, te tuku me te tautoko i nga tono i roto i te docker i raro i te punaha whakahaere Linux (ka kiia i muri nei ko te OS). Kaore i roa i mua ake nei he mahi me nga mahi rite tonu, engari ko te kaupapa OS o te kaupapa ko te Windows Server me te huinga o nga kaupapa C++. Ki ahau nei, koinei te taunekeneke tata tuatahi me nga ipu docker i raro i te Windows OS me te nuinga, me nga tono C++. He mihi ki tenei, he wheako whakamere ahau me te ako mo etahi o nga hianga o nga tono whakauru i roto i te Matapihi.
I roto i tenei tuhinga e hiahia ana ahau ki te korero ki a koe he aha nga raruraru i pa ki a au me te pehea i taea ai e au te whakaoti. Kei te tumanako ahau he awhina tenei mo o wero o naianei me o mua. Kia pai te panui!
He aha nga ipu?
Kei te kamupene nga hanganga o mua mo te Hashicorp Nomad kaiwhakarite ipu me nga waahanga e pa ana - Consul me Vault. Na reira, i whiriwhiria te whakaurunga tono hei tikanga whakakotahi mo te tuku otinga oti. I te mea kei roto i te hanganga kaupapa nga kaihautu docker me nga putanga Windows Server Core OS 1803 me 1809, he mea tika ki te hanga i nga waahanga motuhake o nga whakaahua docker mo 1803 me 1809. I roto i te putanga 1803, he mea nui kia mahara ko te nama whakahou o te kaihautu docker hanga. me taurite ki te tau whakahounga o te ahua docker turanga me te kaihautu ka whakarewahia te ipu mai i tenei ahua. Putanga 1809 karekau he raru penei. Ka taea e koe te panui atu konei.
He aha te waahi-maha?
Karekau, he iti rawa ranei te uru atu a nga miihini o te roopu whanaketanga ki te hanga kaihautu; karekau he huarahi ki te whakahaere tere i te huinga o nga waahanga mo te hanga tono ki runga i enei kaihautu, hei tauira, te whakauru i tetahi taputapu taputapu taapiri ranei mo te Visual Studio. Na reira, i whakatau matou ki te whakauru i nga waahanga katoa e tika ana hei hanga i te tono ki roto i te ahua hanga Docker. Mena e tika ana, ka taea e koe te whakarereke i te dockerfile anake ka whakarewahia te paipa mo te hanga i tenei ahua.
Mai i te ariā ki te mahi
I roto i te hanga pikitia maha-waahanga a Docker, kua rite te taiao mo te hanga i te tono i roto i te tuhinga Dockerfile ano i te wa i hangaia ai te tono. Engari i roto i ta maatau keehi, i taapirihia he hononga takawaenga, ara, ko te taahiraa o te hanga i tetahi ahua docker me nga mea katoa e tika ana hei hanga i te tono. I mahia tenei na te mea i pirangi ahau ki te whakamahi i te waahanga keteroki docker hei whakaiti i te wa whakaurunga o nga whakawhirinakitanga katoa.
Me titiro ki nga kaupapa matua o te tuhinga dockerfile mo te hanga i tenei ahua.
Hei waihanga whakaahua o nga momo OS rerekee, ka taea e koe te tautuhi i tetahi tautohetohe i roto i te dockerfile ka tukuna te nama putanga i te wa o te hanga, a ko te tohu ano hoki o te ahua turanga.
Ka kitea he rarangi katoa o nga tohu atahanga Microsoft Windows Server konei.
ARG WINDOWS_OS_VERSION=1809
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_OS_VERSION
Ma te taunoa nga whakahau i roto i nga tohutohu RUN i roto i te dockerfile i runga i te Windows OS ka mahia i roto i te papatohu cmd.exe. Mo te pai ki te tuhi i nga tuhinga me te whakawhānui ake i nga mahi o nga whakahau e whakamahia ana, ka tautuhia ano e matou te papatohu whakahaere whakahau i Powershell ma te tohutohu. SHELL.
Hei whakauru i nga kohinga ma te whakamahi tiakarete, ka taea noa e koe te tuku hei rarangi, te whakauru ranei kia kotahi ki te wa ka hiahia koe ki te tuku i nga tawhā ahurei mo ia kete. I roto i to maatau ahuatanga, i whakamahia e matou he konae whakakitenga i roto i te whakatakotoranga XML, kei roto he rarangi o nga kohinga e hiahiatia ana me o raatau tawhā. He penei te ahua o ona ihirangi:
I muri mai, ka whakauruhia e matou te taiao hanga tono, ara, MS Build Tools 2019 - he ahua mama tenei o Visual Studio 2019, kei roto te kohinga iti rawa o nga waahanga mo te whakahiato waehere.
Hei tino mahi me ta maatau kaupapa C++, ka hiahia maatau etahi atu waahanga, ara:
Utamahi taputapu C++
Utauta v141
Windows 10 SDK (10.0.17134.0)
Ka taea e koe te whakauru aunoa i tetahi huinga taputapu ma te whakamahi i te konae whirihoranga ki te whakatakotoranga JSON. Ngā ihirangi kōnae whirihoranga:
Ko te rarangi katoa o nga waahanga e waatea ana ka kitea i runga i te waahi tuhinga Microsoft Visual Studio.
Ka whakahaerehia e te dockerfile te tuhinga whakaurunga, a mo te waatea, ka taapirihia te ara ki nga taputapu hanga i nga konae ka taea te kawe ki te taurangi taiao. PATH. He mea tika ano kia tangohia nga konae me nga raarangi koretake hei whakaiti i te rahi o te ahua.
I tenei wa, kua reri to maatau whakaahua mo te whakahiato i te tono C++, a ka taea e taatau te haere tika ki te hanga i te hanga-waahanga docker o te tono.
Maha-waahi i te mahi
Ka whakamahia e matou te ahua i hangaia me nga taputapu katoa i runga i te poari hei ahua hanga. Pērā i te tuhinga dockerfile o mua, ka taapirihia e matou te kaha ki te whakapumau i te tau putanga / tohu tohu mo te ngawari o te whakamahi waehere. He mea nui ki te taapiri i tetahi tapanga as builder ki te whakapakoko huihui i roto i nga tohutohu FROM.
ARG WINDOWS_OS_VERSION=1809
FROM buildtools:$WINDOWS_OS_VERSION as builder
Inaianei kua tae ki te wa ki te hanga i te tono. Ko nga mea katoa i konei he tino ngawari: kape i te waehere puna me nga mea katoa e pa ana ki a ia, ka timata i te mahi whakahiato.
Ko te waahanga whakamutunga o te hanga i te ahua whakamutunga ko te whakapumau i te ahua taketake o te tono, kei reira katoa nga taonga whakahiato me nga konae whirihoranga. Hei kape i nga konae kua whakahiato mai i te ahua o te huihuinga takawaenga, me tohu e koe te tawhā --from=builder i roto i nga tohutohu COPY.
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_OS_VERSION
COPY --from=builder C:/x64/Release/myapp/ ./
COPY ./configs ./
Inaianei ko nga mea katoa e toe ana ko te taapiri i nga mea e tika ana mo ta maatau tono ki te mahi me te tohu i te whakahau whakarewatanga ma nga tohutohu ENTRYPOINT ranei CMD.
mutunga
I roto i tenei tuhinga, i korero ahau me pehea te hanga i tetahi taiao whakahiato katoa mo nga tono C++ i roto i te ipu i raro i te Matapihi me pehea te whakamahi i nga kaha o te docker maha-waahanga hanga ki te hanga whakaahua katoa o to maatau tono.