ඩෝකර් කන්ටේනරයක ඇතුළත සිට, යන්ත්‍රයේ දේශීය හොස්ටයට සම්බන්ධ වන්නේ කෙසේද?


1523

ඉතින් මට ඩොකින් කන්ටේනරයක් තුළ එන්ජින්එක්ස් ධාවනය වන අතර, මට දේශීය හොස්ට් මත ධාවනය වන මිස්ක්එල් ඇත, මගේ එන්ජින්එක්ස් තුළ සිට මයිස්ක්එල් වෙත සම්බන්ධ වීමට මට අවශ්‍යය. MySQL ක්‍රියාත්මක වන්නේ localhost මත වන අතර වරායක් බාහිර ලෝකයට නිරාවරණය නොකරයි, එබැවින් එය localhost මත බැඳී ඇත, යන්ත්‍රයේ ip ලිපිනයට බැඳී නොමැත.

මෙම ඩොකර් බහාලුම තුළ සිට මෙම MySQL හෝ localhost හි වෙනත් වැඩසටහනකට සම්බන්ධ වීමට ක්‍රමයක් තිබේද?

මෙම ප්‍රශ්නය "ඩොකර් කන්ටේනරයක ඇතුළත සිට ඩොකර් ධාරකයේ IP ලිපිනය ලබා ගන්නේ කෙසේද" යන්නට වඩා වෙනස් වේ. ඩොකර් ධාරකයේ IP ලිපිනය පොදු අයිපී හෝ ජාලයේ පුද්ගලික අයිපී විය හැකි නිසා විය හැකිය. ඩොකර් බහාලුම තුළ සිට ළඟා විය නොහැක (මම අදහස් කරන්නේ AWS හෝ වෙනත් දෙයක සත්කාරකත්වය දරන්නේ නම් පොදු IP). ඔබ සතුව ඩොකර් ධාරකයේ IP ලිපිනය තිබුනද එයින් අදහස් කරන්නේ ඔබේ ඩොකර් ජාලය ලෙස IP ලිපිනය උඩිස්, ධාරක, පාලම, මැක්වලාන් යනාදිය විය හැකි කන්ටේනරය තුළ සිට ඔබට ඩොකර් ධාරකයට සම්බන්ධ විය හැකි බව නොවේ. එම IP ලිපිනය.


1
MySQL docker0 සමඟ බැඳ නොගන්නේ මන්ද?
ivant

2
වින්ඩෝස් මැෂින් සඳහා: - $ ඩොකර් ධාවනය -d - නම MyWebServer -P httpd
ලොකේෂ් එස්


1
network: hostඔබට නොමැතිව කන්ටේනරයක සිට ධාරකයට ආපසු යා නොහැක. බහාලුම් සඳහා පමණක් සත්කාර කරන්න. බහාලුම් පිටුපස ඇති ප්‍රධාන මතවාදය මෙයයි. ස්ථාවරත්වය සහ ආරක්ෂක හේතූන් මත ඔවුන් හුදෙකලා වේ.
FreeSoftwareServers

Answers:


2066

සංස්කරණය කරන්න: ඔබ ඩෝකර්-ෆෝ-මැක් හෝ වින්ඩෝස් 18.03+ සඳහා ඩොකර් භාවිතා කරන්නේ නම්, ධාරකය භාවිතා කර ඔබේ මයිස්ක්ල් සේවාවට සම්බන්ධ වන්න host.docker.internal( 127.0.0.1ඔබේ සම්බන්ධතා නූල වෙනුවට ).

ඩෝකර් 18.09.3 වන විට, මෙය ඩොකර්-ෆෝ-ලිනක්ස් මත ක්‍රියා නොකරයි. අපූරු මාර්තු 8 වැනි, 2019 ඉදිරිපත් කර ඇති බවත්, බලාපොරොත්තු කේතය පදනම ඒකාබද්ධ වනු ඇත. එතෙක්, විසඳුමක් වන්නේ qoomon හි පිළිතුරෙහි විස්තර කර ඇති පරිදි බහාලුමක් භාවිතා කිරීමයි .

2020-01: යම් ප්‍රගතියක් ලබා ඇත. සියල්ල හොඳින් සිදුවුවහොත්, මෙය ඩෝකර් 20.04 ට ගොඩවිය යුතුය


ටීඑල්ඩීආර්

--network="host"ඔබගේ docker runවිධානය තුළ භාවිතා කරන්න , එවිට 127.0.0.1ඔබගේ ඩොකර් බහාලුමේ ඔබේ ඩොකර් ධාරකයට යොමු වේ.

සටහන: මෙම ප්‍රකාරය ක්‍රියාත්මක වන්නේ ප්‍රලේඛනය අනුව ලිනක්ස් සඳහා ඩොකර් මත පමණි .


ඩොකර් බහාලුම් ජාලකරණ මාතයන් පිළිබඳ සටහන

බහාලුම් ධාවනය කිරීමේදී ඩෝකර් විවිධ ජාලකරණ ක්‍රම ඉදිරිපත් කරයි . ඔබ තෝරා ගන්නා මාදිලිය මත පදනම්ව, ඔබ ඩොකර් ධාරකයේ ක්‍රියාත්මක වන MySQL දත්ත ගබඩාවට වෙනස් ආකාරයකින් සම්බන්ධ වනු ඇත.

docker run --network = "පාලම" (පෙරනිමිය)

ඩෝකර් docker0පෙරනිමියෙන් නම් කළ පාලමක් නිර්මාණය කරයි . ඩොකර් ධාරකයට සහ ඩොකර් බහාලුම්වලට එම පාලමේ IP ලිපිනයක් ඇත.

ඩෝකර් ධාරකයේ, sudo ip addr show docker0ඔබට ප්‍රතිදානය සමාන වනු ඇතැයි ටයිප් කරන්න:

[vagrant@docker:~] $ sudo ip addr show docker0
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::5484:7aff:fefe:9799/64 scope link
       valid_lft forever preferred_lft forever

ඉතින් මෙන්න මගේ ඩෝකර් ධාරකයට ජාල අතුරුමුහුණතේ IP ලිපිනය 172.17.42.1ඇත docker0.

දැන් නව බහාලුමක් ආරම්භ කර එය මත කවචයක් ලබා ගන්න: docker run --rm -it ubuntu:trusty bashසහ ip addr show eth0එහි ප්‍රධාන ජාල අතුරුමුහුණත සකසා ඇති ආකාරය සොයා ගැනීමට බහාලුම් වර්ගය තුළ :

root@e77f6a1b3740:/# ip addr show eth0
863: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 66:32:13:f0:f1:e3 brd ff:ff:ff:ff:ff:ff
    inet 172.17.1.192/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::6432:13ff:fef0:f1e3/64 scope link
       valid_lft forever preferred_lft forever

මෙන්න මගේ කන්ටේනරයේ IP ලිපිනය 172.17.1.192ඇත. දැන් රවුටින් වගුව දෙස බලන්න:

root@e77f6a1b3740:/# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.17.42.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 eth0

එබැවින් ඩොකර් ධාරකයේ IP ලිපිනය 172.17.42.1සුපුරුදු මාර්ගය ලෙස සකසා ඇති අතර එය ඔබගේ බහාලුමෙන් ප්‍රවේශ විය හැකිය.

root@e77f6a1b3740:/# ping 172.17.42.1
PING 172.17.42.1 (172.17.42.1) 56(84) bytes of data.
64 bytes from 172.17.42.1: icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from 172.17.42.1: icmp_seq=2 ttl=64 time=0.201 ms
64 bytes from 172.17.42.1: icmp_seq=3 ttl=64 time=0.116 ms

docker run --network = "සත්කාරක"

විකල්පයක් ලෙස ඔබට ජාල සැකසුම් සකසාhost ඇති ඩොකර් බහාලුමක් ධාවනය කළ හැකිය . එවැනි බහාලුමක් ඩොකර් ධාරකය සමඟ ජාල ගබඩාව බෙදාගනු ඇති අතර බහාලුම් දෘෂ්ටි කෝණයෙන් localhost(හෝ 127.0.0.1) ඩොකර් ධාරකයට යොමු වේ.

ඔබගේ ඩොකර් බහාලුමේ විවෘත කර ඇති ඕනෑම වරායක් ඩොකර් ධාරකයේ විවෘත වන බව මතක තබා ගන්න. මෙය විකල්පයක් -pහෝ -P docker runවිකල්පයක් නොමැතිව .

මගේ ඩොකර් ධාරකයේ IP වින්‍යාසය:

[vagrant@docker:~] $ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:98:dc:aa brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe98:dcaa/64 scope link
       valid_lft forever preferred_lft forever

සහ ධාරක මාදිලියේ ඩොකර් බහාලුමකින් :

[vagrant@docker:~] $ docker run --rm -it --network=host ubuntu:trusty ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:98:dc:aa brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe98:dcaa/64 scope link
       valid_lft forever preferred_lft forever

ඔබට පෙනෙන පරිදි ඩොකර් ධාරක සහ ඩොකර් බහාලුම් දෙකම එකම ජාල අතුරු මුහුණතක් බෙදා ගන්නා අතර එකම IP ලිපිනයක් ඇත.


බහාලුම් වලින් MySQL වෙත සම්බන්ධ වීම

පාලම් මාදිලිය

පාලම් මාදිලියේ බහාලුම් වලින් ඩොකර් ධාරකයේ ධාවනය වන MySQL වෙත ප්‍රවේශ වීමට , 172.17.42.1IP ලිපිනයේ ඇති සම්බන්ධතා සඳහා MySQL සේවාව සවන් දෙන බවට ඔබ සහතික විය යුතුය .

එසේ කිරීමට, ඔබ සතුව bind-address = 172.17.42.1හෝ bind-address = 0.0.0.0ඔබේ MySQL වින්‍යාස ගොනුවේ (my.cnf) ඇති බවට වග බලා ගන්න .

ඔබට ගේට්ටුවේ IP ලිපිනය සමඟ පරිසර විචල්‍යයක් සැකසීමට අවශ්‍ය නම්, ඔබට පහත කේතය බහාලුමක් තුළ ධාවනය කළ හැකිය:

export DOCKER_HOST_IP=$(route -n | awk '/UG[ \t]/{print $2}')

ඉන්පසු ඔබේ යෙදුමේ, DOCKER_HOST_IPMySQL වෙත සම්බන්ධතාවය විවෘත කිරීමට පරිසර විචල්‍යය භාවිතා කරන්න.

සටහන: ඔබ bind-address = 0.0.0.0ඔබේ MySQL සේවාදායකය භාවිතා කරන්නේ නම් සියලුම ජාල අතුරුමුහුණත් වල සම්බන්ධතා සඳහා සවන් දෙනු ඇත. ඒ කියන්නේ ඔබේ MySQL සේවාදායකය අන්තර්ජාලයෙන් ලබා ගත හැකිය; ඒ අනුව ෆයර්වෝල් නීති සැකසීමට වග බලා ගන්න.

සටහන 2: ඔබ bind-address = 172.17.42.1ඔබේ MySQL සේවාදායකය භාවිතා කරන්නේ නම් ඇති සම්බන්ධතා වලට සවන් නොදේ 127.0.0.1. MySQL හා සම්බන්ධ වීමට අවශ්‍ය ඩොකර් ධාරකයේ ක්‍රියාත්මක වන ක්‍රියාවලියන්ට 172.17.42.1IP ලිපිනය භාවිතා කිරීමට සිදුවේ .

ධාරක මාදිලිය

ධාරක මාදිලියේ බහාලුම් වලින් ඩොකර් ධාරකයේ ධාවනය වන MySQL වෙත ප්‍රවේශ වීම සඳහා , ඔබට bind-address = 127.0.0.1ඔබේ MySQL වින්‍යාසය තුළ තබා ගත හැකි අතර ඔබ කළ යුත්තේ 127.0.0.1ඔබේ බහාලුම් වලින් සම්බන්ධ වීමයි :

[vagrant@docker:~] $ docker run --rm -it --network=host mysql mysql -h 127.0.0.1 -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

සටහන: භාවිතා කරන්න mysql -h 127.0.0.1සහ නොකරන්න mysql -h localhost; එසේ නොමැතිනම් MySQL සේවාදායකයා යුනික්ස් සොකට් භාවිතයෙන් සම්බන්ධ වීමට උත්සාහ කරයි.


8
එවැනි සවිස්තරාත්මක පිළිතුරකට ස්තූතියි! මා රැස් කරගත් දෙයින්, සත්කාරක මාදිලිය භාවිතා කිරීම localhost හරහා මෙම ක්‍රියාකාරිත්වය ලබා ගත හැකි එකම ක්‍රමයයි. මම උත්සාහ කර නැති නමුත් ඔවුන්ගේ පාලම හරහා බහාලුම් සම්බන්ධ කිරීම සඳහා වෙනම ජාලයක් නිර්මාණය කළ හැකි යැයි මම සිතමි.
බෙන්

26
OSX භාවිතා කරන්නන් සඳහා සටහන: පළමුව ඔබේ ඩොකර් අතථ්‍ය යන්ත්‍රයට (boot2docker) පිවිස, "docker-machine ssh default" භාවිතා කර, පසුව "sudo ip addr show docker0" ධාවනය කරන්න. එතැන් සිට තෝමස්ගේ උපදෙස් සමඟ ඉදිරියට යන්න.
චාලි ඩල්සාස්

31
මම මැක් සඳහා ඩෝකර් ධාවනය කරමි, තවදුරටත් 172.17.42.1 නැත, තවදුරටත් ඩොකර් 0 නැත. එය ගේට්වේ ලෙස 172.17.0.1 ක් වූ අතර එය පවා කළ නොහැකtelnet 172.17.0.1 3306
zx1986

26
-v /var/run/mysqld/mysqld.sock:/tmp/mysql.sockමේ වගේ ජාලකරණය වෙනුවට ඔබට MySQL සොකට් එක කන්ටේනරය තුළට සවි කළ හැකිය .
chx

8
ඔබගේ ඩොකර් මැක් මත ධාවනය වන අතර ඩොකර් 0 අතුරුමුහුණතක් නොමැති බැවින් බූට් 2 ඩොකර් භාවිතා නොකරන විට යමෙකුට තත්වය විසඳිය හැකිද?
TheJKFever

357

මැකෝස් සහ වින්ඩෝස් සඳහා

ඩෝකර් v 18.03 සහ ඊට වැඩි (2018 මාර්තු 21 සිට)

ඔබගේ අභ්‍යන්තර IP ලිපිනය භාවිතා කරන්න හෝ විශේෂ DNS නාමයට සම්බන්ධ වන්න, host.docker.internalඑය ධාරකයා භාවිතා කරන අභ්‍යන්තර IP ලිපිනයට විසඳනු ඇත.

ලිනක්ස් සහාය අපේක්ෂිත https://github.com/docker/for-linux/issues/264

ඩෝකර් හි පෙර සංස්කරණ සහිත මැකෝස්

මැක් v 17.12 සිට v 18.02 දක්වා ඩොකර්

ඉහත ආකාරයටම නමුත් docker.for.mac.host.internalඒ වෙනුවට භාවිතා කරන්න.

මැක් v 17.06 සිට v 17.11 සඳහා ඩොකර්

ඉහත ආකාරයටම නමුත් docker.for.mac.localhostඒ වෙනුවට භාවිතා කරන්න.

මැක් 17.05 සහ ඊට පහළ ඩොකර්

ඩොකර් බහාලුමෙන් ධාරක යන්ත්‍රයට ප්‍රවේශ වීමට ඔබ ඔබේ ජාල අතුරුමුහුණතට IP අන්වර්ථයක් ඇමිණිය යුතුය. ඔබට අවශ්‍ය ඕනෑම අයිපී එකක් බැඳ තැබිය හැකිය, ඔබ එය වෙනත් දෙයකට භාවිතා නොකරන බවට වග බලා ගන්න.

sudo ifconfig lo0 alias 123.123.123.123/24

ඔබගේ සේවාදායකය ඉහත සඳහන් කළ IP වලට සවන් දෙන බවට වග බලා ගන්න 0.0.0.0. එය localhost හි සවන්දෙන්නේ නම් එය 127.0.0.1සම්බන්ධතාවය පිළිගන්නේ නැත.

ඉන්පසු ඔබගේ ඩොකර් කන්ටේනරය මෙම අයිපී වෙත යොමු කරන්න, එවිට ඔබට ධාරක යන්ත්‍රයට ප්‍රවේශ විය හැකිය!

පරීක්ෂා කිරීම සඳහා ඔබට curl -X GET 123.123.123.123:3000කන්ටේනරය තුළ වැනි දෙයක් ධාවනය කළ හැකිය .

අන්වර්ථය සෑම නැවත පණගැන්වීමකදීම නැවත සැකසෙනු ඇත, එබැවින් අවශ්‍ය නම් ආරම්භක පිටපතක් සාදන්න.

විසඳුම සහ තවත් ලියකියවිලි මෙහි: https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds


5
දීප්තිමත් හා ස්තූතියි, මෙය කන්ටේනරය තුළ සිට මට වැඩ කළා. mysql -uroot -hdocker.for.mac.localhost
රිචඩ් ෆ්‍රෑන්ක්

1
docker.for.mac.localhost යනු මා සොයන දේමයි. නමුත් මෙය එකවරම අපායක් මෙන් අපිරිසිදු ය. ඩොකර් තුළ, යමෙකු බලාපොරොත්තු වන්නේ කොක්ක docker.for.mac.localhost යනු මැක් සඳහා පමණක් නොව ඕනෑම මෙහෙයුම් පද්ධතියකට වලංගු වන සාමාන්‍ය ඩොකර් අභ්‍යන්තර නාමයක් වනු ඇති බවයි. නමුත් සංවර්ධන අරමුණු සඳහා මෙය ප්‍රමාණවත්ය.
99 සොනෝ

9093 කියමින් නිරාවරණය වන වරායකට මා පිවිසෙන්නේ කෙසේද .. මම උත්සාහ කරන්නේ dock.for.mac.localhost 9093 ටෙල්නෙට් කිරීමටයි. එය වෙත ළඟා විය නොහැකි නමුත් මම docker.for.mac.localhost පිං කළහොත්, එය ළඟා විය හැකිය. මට මෙහි යමක් නැති වී තිබේද?
අචිලියස්

1
DNS නාමය docker.for.mac.host.internal බහාලුම් වලින් ධාරක විභේදනය සඳහා docker.for.mac.localhost (තවමත් වලංගු) වෙනුවට භාවිතා කළ යුතුය. Tools.ietf.org/html/draft-west-let-localhost-be-localhost-06 බලන්න .
ජියා

මෙය මට වැඩ කරන්නේ නැත. මම විට docker run -e HOSTNAME= docker.for.mac.host.internal , කන්ටේනරය නිර්මාණය කර ඇති නමුත් නොහික්මුණු වීම සිදු වේ. මට පසුව crtl + C. සමග --net=host -e HOSTNAME=localhostඅවම වශයෙන් රුවනයකි ක් හා එය සේවය මම අවශ්යතාව (MySQL db) සොයා ගැනීමට නොහැකි බව චෝදනා කරයි.
ජෝර්ජ් ඕපිනෙල්

86

කන්ටේනරයේ අන්වර්ථ නාමයකට (ඩීඑන්එස්) සිතියම් ගත කිරීම සඳහා දේශීය අයිපී ලබා ගැනීමට ඉහත ලිපි වලට සමාන හැක් කිරීමක් මම කරමි. ප්‍රධාන ගැටළුව වන්නේ ලිනක්ස් සහ ඕඑස්එක්ස් යන දෙවර්ගයේම ක්‍රියා කරන සරල ස්ක්‍රිප්ටයක් සමඟ ගතිකව ලබා ගැනීමයි . මම මෙම ස්ක්‍රිප්ට් එක කළේ පරිසර දෙකෙහිම ( "$LANG" != "en_*"වින්‍යාසගත කර ඇති ලිනක්ස් බෙදාහැරීමේදී පවා ):

ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1

එබැවින්, ඩෝකර් රචනා භාවිතා කරමින්, සම්පූර්ණ වින්‍යාසය වනුයේ:

ආරම්භක ස්ක්‍රිප්ට් (docker-run.sh) :

export DOCKERHOST=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1)
docker-compose -f docker-compose.yml up

docker-compose.yml :

myapp:
  build: .
  ports:
    - "80:80"
  extra_hosts:
    - "dockerhost:$DOCKERHOST"

එවිට වෙනස් http://localhostකිරීමට http://dockerhostඔබගේ කේතය දී.

DOCKERHOSTස්ක්‍රිප්ට් රිසිකරණය කරන්නේ කෙසේද යන්න පිළිබඳ වඩාත් අත්තිකාරම් මාර්ගෝපදේශයක් සඳහා , මෙම පෝස්ට් එක ක්‍රියා කරන ආකාරය පිළිබඳ පැහැදිලි කිරීමක් සමඟ බලන්න .


1
ඔබගේ භාවිත නඩුව මත පදනම්ව, DOCKERHOSTඔබේ ඩොකර් කන්ටේනරය දේශීයව සම්බන්ධ වීමට අවශ්‍ය ඕනෑම සේවාවක “localhost” හෝ 0.0.0.0 වෙනුවට මෙහි වටිනාකම භාවිතා කිරීමෙන් ඔබ ඉවත් විය හැකිය .
එන්ඩර්ලන්ඩ්

2
: මම තරමක් අභිරුචි ජාල සමඟ අනුකූල වීමට ඔබේ විසඳුමක් වෙනස් කරන ලදි export DOCKERHOST=$(docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' <NETWORK-NAME> | awk -F "/" 'NR==1{print $1}') කොහෙද <ජාලය-නාමය> විය හැකි පාලමක් docker-සකසනය (සාමාන්යයෙන් අර්ථ දක්වන පරිදි හෝ ජාලය නම මාර්ගය-නම - network_name ).
dieresys

1
ඔබට අදහසක් එක් කිරීමට අවශ්‍යය: dockerhostdb සම්බන්ධතාවය සඳහා ධාරකය ලෙස භාවිතා කරන්න (සාමාන්‍යයෙන් localhostවින්‍යාස ගොනුවේ ප්‍රතිස්ථාපනය කරන්න).
ජස්ටින්

අමුතු විසඳුමක්, නමුත් xdebug ඩොකර් යටතේ php cli සමඟ වැඩ කරන එකම දේ
එඩී

Acl මෙම විසඳුමෙන් පසු හැප්‍රොක්සි වල වැඩ කිරීම නැවැත්වීය. කිසියම් අදහසක් ඇයි?
හියුක්හුක්බෝයි

41

යෙදුම සම්බන්ධ වීමට හැකි වනු ඇතැයි අපේක්‍ෂා කරන කිසිදු කේතයක් හෝ ජාලයක් ස්පර්ශ නොකර NGINX / PHP-FPM තොගයක් මත මෙය මට වැඩ කළේය. localhost

සවි mysqld.sockසත්කාරක සිට එහි ඇතුළත ය.

MySQL ධාවනය වන ධාරකයේ mysql.sock ගොනුවේ පිහිටීම සොයා ගන්න:
netstat -ln | awk '/mysql(.*)?\.sock/ { print $9 }'

එම ගොනුව ඩොකර් තුළ බලාපොරොත්තු වන ස්ථානයට සවි කරන්න:
docker run -v /hostpath/to/mysqld.sock:/containerpath/to/mysqld.sock

Mysqld.sock හි විය හැකි ස්ථාන:

/tmp/mysqld.sock
/var/run/mysqld/mysqld.sock 
/var/lib/mysql/mysql.sock
/Applications/MAMP/tmp/mysql/mysql.sock # if running via MAMP

2
මෙය වඩා පිරිසිදු විසඳුමක් වන අතර මයිස්ක්ල් පිටතට නිරාවරණය නොකිරීම (ෆයර්වෝලයක් භාවිතා නොකරන්නේ නම්).
user1226868

5
සොකට් පරිමාණයෙන් මෙන්ම ටී.සී.පී. වලින් පරිබාහිර නොවේ, මන්ද ඒවා නිතර අවහිර වන අතර අමුතු හැසිරීමට හේතු විය හැක. හැකි සෑම විටම TCP භාවිතා කරන්න.
ජොයෙල් ඊ සලාස්

3
Oe ජොයෙල්සාලස් එම හිමිකම් පෑම සඳහා ඔබට ප්‍රභවයක් තිබේද?
පුද්ගලික

මෙය පහසුම විසඳුම බව මම සොයාගෙන ඇත්තෙමි. පරිශීලක 8333482! ඔබ බොහෝ විට StackOverflow වෙත දායක විය යුතුය.
පුද්ගලික

2
O ජොයෙල්සාලස් මම හිතන්නේ ඔයාට වැරදුණා. MySQL ග්‍රාහක පුස්තකාලය localhost සමඟ සම්බන්ධ වීමට වඩා පෙරනිමියෙන් යුනික්ස් සොකට් භාවිතා කරයි. යුනික්ස් සොකට් එකක් ටීසීපී තොගයේ සහ රවුටරයේ ඉහළ කොටස වළක්වන අතර වේගයෙන් ධාවනය විය යුතුය.
එම් කොන්රාඩ්

25

host.docker.internalසෑම වේදිකාවක් සඳහාම වැඩ කරන තුරු , ඔබට මගේ බහාලුම කිසිදු සැකසුම් නොමැතිව NAT ද්වාරයක් ලෙස ක්‍රියා කළ හැකිය:

https://github.com/qoomon/docker-host


5
වින්ඩෝස් බහාලුම් සමඟ වින්ඩෝස් 19.03.2 සඳහා ඩොකර් හි මෙය ක්‍රියා නොකරන බව මට තහවුරු කළ හැකිය.
KMC

එය නිවැරදි කරන්නේ කෙසේදැයි යම් අදහසක් තිබේද? (මම කවුළු භාවිතා කරන්නෙක් නොවේ)
qoomon

ඔබ පරිසරය වරාය mysql භාවිතය අවහිර නොකරන්නේ නම්, ඔබට එය සත්කාරකත්වය දක්වන පරිගණක නාමයෙන් සේවාදායකය වෙත යොමු කළ හැකිය. එබැවින් ඔබේ සම්බන්ධතා නූල තුළ, ඔබේ පරිගණක නාමය සේවාදායක නාමයක් ලෙස භාවිතා කරන්න.
KMC

24

ලිනක්ස් සඳහා විසඳුම (කර්නලය> = 3.6).

හරි, ඔබේ localhost සේවාදායකයට ip ලිපිනය 172.17.0.1 සමඟ පෙරනිමි ඩොකර් අතුරුමුහුණත docker0 ඇත . ඔබේ බහාලුම සුපුරුදු ජාල සැකසුම් සමඟ ආරම්භ විය --net = "පාලම" .

  1. Docker0 අතුරුමුහුණත සඳහා route_localnet සක්‍රීය කරන්න:
    $ sysctl -w net.ipv4.conf.docker0.route_localnet=1
  2. Iptables වෙත මෙම නීති එක් කරන්න:
    $ iptables -t nat -I PREROUTING -i docker0 -d 172.17.0.1 -p tcp --dport 3306 -j DNAT --to 127.0.0.1:3306
    $ iptables -t filter -I INPUT -i docker0 -d 127.0.0.1 -p tcp --dport 3306 -j ACCEPT
  3. '%' වෙතින් ප්‍රවේශය ඇති mysql පරිශීලකයෙකු සාදන්න - එයින් අදහස් වන්නේ - localhost හැර, ඕනෑම අයෙකුගෙන්:
    CREATE USER 'user'@'%' IDENTIFIED BY 'password';
  4. ඔබේ ස්ක්‍රිප්ටයේ mysql-server ලිපිනය 172.17.0.1 ලෙස වෙනස් කරන්න


සිට කර්නලය ප්රලේඛනය :

route_localnet - BOOLEAN: මාර්ගගත කිරීමේදී ලූප්බැක් ලිපින අඟහරු ප්‍රභවයක් හෝ ගමනාන්තයක් ලෙස නොසලකන්න. මෙය දේශීය මාර්ගගත කිරීමේ අරමුණු සඳහා 127/8 භාවිතා කිරීමට ඉඩ සලසයි ( පෙරනිමි FALSE ).


1
දෙවන iptable විධානයේ අරමුණ කුමක්ද? මට තේරුම් ගත හැකි පළමු දෙය නම් 172.17.0.1:3306 සිට 127.0.0.1:3306 දක්වා ගැලපෙන සියලුම tcp ගමනාන්තය නැවත ලිවීමයි. නමුත් දෙවන iptable විධානය අවශ්‍ය වන්නේ ඇයි?
පැට්රික්

17

වින්ඩෝස් 10 සඳහා විසඳුම

ඩොකර් ප්‍රජා සංස්කරණය 17.06.0-ce-win18 2017-06-28 (ස්ථාවර)

docker.for.win.localhostඅභ්‍යන්තර IP වෙත නිරාකරණය කිරීම සඳහා ඔබට ධාරකයේ DNS නම භාවිතා කළ හැකිය . (සඳහන් කර ඇති සමහර මූලාශ්‍ර අනතුරු අඟවන windowsනමුත් එය එසේ විය යුතුය win)

දළ විශ්ලේෂණය
මට ඒ හා සමාන දෙයක් කිරීමට අවශ්‍ය විය, එය මගේ ඩෝකර් බහාලුමේ සිට මගේ දේශීය හොස්ට් වෙත සම්බන්ධ වන අතර එය ක්‍රියාත්මක වන Azure Storage Emulatorසහ CosmosDB Emulator.

මෙම Azure Storage Emulatorපැහැර සවන් විසින් 127.0.0.1 , ඔබ ද එහි බැඳී, IP වෙනස් කළ හැකිය අතර, මම ප්රකෘති සැකසුම සමඟ වැඩ කරන බව විසඳුමක් හෙව්වා.

මෙය ද මගේ Docker රුවනයකි සිට සම්බන්ධ කිරීම සඳහා ක්රියා කරන SQL Serverඅතර IIS, දෙකම පෙරනිමි තොට සැකසුම් මගේ සත්කාරක මත එක්කෝ කොබැඳි නැත්නම් ස්ථානීකව නොපවතියි ධාවනය.


15

ඉතා සරල හා ඉක්මන්, ඔබගේ සත්කාරක IP ifconfig (linux) හෝ ipconfig (windows) සමඟ පරීක්ෂා කර a

docker-compose.yml

version: '3' # specify docker-compose version

services:
  nginx:
    build: ./ # specify the directory of the Dockerfile
    ports:
      - "8080:80" # specify port mapping
    extra_hosts:
      - "dockerhost:<yourIP>"

මේ ආකාරයෙන්, ඔබේ බහාලුමට ඔබේ ධාරකයට ප්‍රවේශ විය හැකිය. ඔබේ ඩීබී වෙත ප්‍රවේශ වන විට, ඔබ කලින් සඳහන් කළ නම භාවිතා කිරීමට මතක තබා ගන්න, මේ අවස්ථාවේ දී “ඩොකර්හෝස්ට්” සහ ඩීබී ක්‍රියාත්මක වන ඔබේ ධාරකයේ වරාය


HaProxy හි, මෙම විසඳුම කිසියම් හේතුවක් නිසා acl හි වැඩ කිරීම නවතා දමා ඇත, පෙරනිමි සැකසුම පමණක් ක්‍රියාත්මක වේ.
හියුක් හියුක්බෝයි

1
que bueno, me salvaste
user8658912

11

වින්ඩෝස් 10 හෝම් හි ඩෝකර් මෙවලම් පෙට්ටිය භාවිතා කරන විට කිසිදු පිළිතුරක් මට වැඩ කළේ නැත, නමුත් 10.0.2.2 එය කළේ වර්චුවල් බොක්ස් භාවිතා කරන බැවින් මෙම ලිපිනයෙහි වීඑම් වෙත ධාරකය නිරාවරණය කරයි.


2
එය වැඩ කරනවා. --Network = ධාරකය සඳහන් කිරීමට පවා අවශ්‍ය නැත. 10.0.2.2 ධාරකයේ පෙරනිමි IP ලෙස සකසා ඇති බව පෙනේ. ස්තූතියි.
TheManish

නමුත්, වින්ඩෝස් සහ මැක් හි සියලුම සංස්කරණ සඳහා මට මෙම ස්ථිතික අයිපී භාවිතා කළ හැකිද? ස්ක්‍රිප්ට් හරහා විවිධ වේදිකා සඳහා එය හැසිරවිය හැක්කේ කෙසේද?
151291

මෙය මට වැඩ කළා. ඔබගේ සත්කාරක (කවුළු) මත ipconfig ධාවනය කර IP ලිපිනය යටතේ ලබා ගන්නEthernet adapter vEthernet (DockerNAT)
කිහාට්ස්

10

වින්ඩෝස් හි සිටින අය සඳහා, ඔබ පාලම් ජාල ධාවකයක් භාවිතා කරයි යැයි උපකල්පනය කරමින්, ඔබට විශේෂයෙන් MySQL හයිපර්-වී ජාල අතුරුමුහුණතේ අයිපී ලිපිනයට බැඳීමට අවශ්‍ය වනු ඇත.

මෙය සාමාන්‍යයෙන් සැඟවුණු C: \ ProgramData \ MySQL ෆෝල්ඩරය යටතේ වින්‍යාස ගොනුව හරහා සිදු කෙරේ.

0.0.0.0 ට බන්ධනය ක්‍රියා නොකරනු ඇත. අවශ්‍ය ලිපිනය ඩොකර් වින්‍යාසය තුළ ද පෙන්වා ඇති අතර මගේ නඩුවේ 10.0.75.1 විය.


4
ඔබ පදක්කමක් ලැබීමට සුදුසුයි! මම මේ සඳහා සම්පූර්ණ දින දෙකක් වැඩ කරමින් සිටිමි. උදව් කිරීමට ස්තූතියි!
මයිකල්

1
මමත් මේ සඳහා සම්පූර්ණ දින දෙකක් වැඩ කරමින් සිටියෙමි. වෙබයේ සඳහන් කර ඇති එකම ස්ථානය මෙයයි. ඩොකර් බහාලුමක් තුළ සිට MSSQL හා සම්බන්ධ වීම ගැන කතා කරන විට මයික්‍රොසොෆ්ට් මේ පිළිබඳව සම්පූර්ණයෙන්ම නිහ is ය. එය ඔවුන් කවදා හෝ තමන් විසින්ම වැඩ කර ඇත්දැයි ඔබ පුදුමයට පත් කරයි!
කොන්ටැන්ගෝ

8

සංස්කරණය කරන්න: මම GitHub හි සංකල්පය මූලාකෘතිකරණය කිරීම අවසන් කළෙමි. පරීක්ෂා කරන්න: https://github.com/sivabudh/system-in-a-box


පළමුව, මගේ පිළිතුර කණ්ඩායම් 2 ක් වෙත යොමු කර ඇත: මැක් භාවිතා කරන අය සහ ලිනක්ස් භාවිතා කරන්නන්.

මෙම සත්කාරක ජාල මාධ්යය මැක් මත වැඩ කරන්නේ නැහැ. ඔබට IP අන්වර්ථයක් භාවිතා කළ යුතුය, බලන්න: https://stackoverflow.com/a/43541681/2713729

ධාරක ජාල මාදිලිය යනු කුමක්ද? බලන්න: https://docs.docker.com/engine/reference/run/#/network-settings

දෙවනුව, ඔබ ලිනක්ස් භාවිතා කරන අයට (මගේ experience ජු අත්දැකීම උබුන්ටු 14.04 එල්ටීඑස් සමඟ වූ අතර මම ඉක්මනින් නිෂ්පාදනයෙහි එල්ටීඑස් 16.04 දක්වා ඉහළ නංවන්නෙමි), ඔව් , ඔබට ඩොකර් බහාලුමක් තුළ localhostක්‍රියාත්මක වන සේවාව ක්‍රියාත්මක වන සේවාවන්ට සම්බන්ධ කළ හැකිය . ඩෝකර් සත්කාරක (උදා: ඔබේ ලැප්ටොප්).

කෙසේද?

ප්රධාන දෙය නම් ඔබ ඩෝකර් බහාලුම ධාවනය කරන විට, ඔබ එය ධාරක මාදිලිය සමඟ ධාවනය කළ යුතුය . විධානය මේ වගේ ය:

docker run --network="host" -id <Docker image ID>

ඔබ එසේ කරන විට ifconfig(ඔබ කිරීමට අවශ්ය වනු ඇත apt-get install net-toolsඔබේ රුවනයකි ifconfigඔබගේ එහි ඇතුළත callable විය), ඔබ ජාල අතුරුමුහුණත් Docker සත්කාරක (උදා., ඔබේ ලැප්ටොප්) මත එක් මෙන් ම බව පෙනෙනු ඇත.

මම මැක් පරිශීලකයෙක් බව සටහන් කර ගැනීම වැදගත්ය, නමුත් මම සමාන්තරයන් යටතේ උබුන්ටු ධාවනය කරමි, එබැවින් මැක් භාවිතා කිරීම අවාසියක් නොවේ. ;-)

එන්ජීඑන්එක්ස් කන්ටේනරය ක්‍රියාත්මක වන MySQL සමඟ සම්බන්ධ වන්නේ එලෙසයි localhost.


1
OS ජාල තොගය භාවිතා කරන බැවින් ධාරක මාදිලිය වඩා හොඳ කාර්ය සාධනයක් ලබා දෙන බව සැලකිල්ලට ගැනීම වැදගත්ය .
සිවබුද්

2
එහි ඉතා හොඳ කරුණක්. භාවිතයට නොගත් IP ඇමිණුම් සහිත බහාලුම් සිට ධාරක සේවාවක් වෙත සම්බන්ධ වීමට හැකි වුවද docs.docker.com/docker-for-mac/networking . ප්රසන්න විසඳුමක් නොවේ ... නමුත් ක්රියා කරයි.
සේවියර් හුපේ

මෙහි හොඳ දේවල්. සමඟ කන්ටේනරය තුළට ගිය පසු --network="host", උදාහරණයක් ලෙස යමෙකු ධාරක mysql වෙත සම්බන්ධ වන්නේ කෙසේද?
මයිකල්

1
Uc බුකියුලච් භාවිතා කරන්න localhost. මගේ GitHub ප්‍රභව කේතය බලන්න: github.com/sivabudh/system-in-a-box/blob/master/dj_host_docker/… . සොයන්න 'HOST', Postgresql වෙත සම්බන්ධ වීමට ඔබට 127.0.0.1 පෙනෙනු ඇත.
සිවබුද්

@ User833482 අනුව පරිමාව සවිකිරීමෙන් සහ ඇත්ත වශයෙන්ම ඩොකර් බහාලුම් මත mysql-client සහ සේවාදායකය ස්ථාපනය කිරීමෙන් පසුව ධාරක mysql දත්ත සමුදායන් වෙත ප්‍රවේශ වීමට මට හැකි විය.
මයිකල්

8

කවුළු සඳහා,

වසන්ත වින්‍යාසය තුළ මම දත්ත සමුදාය url වෙනස් කර ඇත: spring.datasource.url=jdbc:postgresql://host.docker.internal:5432/apidb

ඉන්පසු රූපය ගොඩනඟා ධාවනය කරන්න. එය මට වැඩ කළා.


1
මට වැඩ කරන්නේ නැහැ. මට මැක් ඇති අතර දේශීය හොස්ට් මයිස්ක්ල් වෙත සම්බන්ධ වීමට පීඑච්පී බහාලුමකින් උත්සාහ කරමි. කිසියම් අදහසක් තිබේද?
ඒ. සලොනිස්

1
මෙය මැක් මතද ක්‍රියාත්මක වේ
මයිකල්

7

මැක් ඕඑස්එක්ස් සඳහා සරලම විසඳුම

ඔබගේ මැක්හි IP ලිපිනය භාවිතා කරන්න. මැක්හි මෙය IP ලිපිනය ලබා ගැනීමට සහ කන්ටේනරය තුළ සිට භාවිතා කිරීමට මෙය ධාවනය කරන්න:

$ ifconfig | grep 'inet 192'| awk '{ print $2}'

ඔබේ මැක්හි හෝ වෙනත් ඩොකර් බහාලුමක දේශීයව ක්‍රියාත්මක වන සේවාදායකය 0.0.0.0 ට සවන් දෙන තාක් කල්, ඩොකර් බහාලුමට එම ලිපිනයට ළඟා විය හැකිය.

ඔබට 0.0.0.0 ට සවන්දෙන වෙනත් ඩොකර් බහාලුමක් වෙත පිවිසීමට අවශ්‍ය නම් ඔබට 172.17.0.1 භාවිතා කළ හැකිය


1
මැක් සඳහා ඩොකර් docker.for.mac.host.internalදැන් සත්කාරක නාමය හෙළි කරයි .
මැට්

7

මෙය සත්‍ය ප්‍රශ්නයට පිළිතුරක් නොවේ. මේ හා සමාන ගැටලුවක් මා විසඳූ ආකාරය මෙයයි. විසඳුම මුළුමනින්ම පැමිණෙන්නේ: ඩෝකර් බහාලුම් ජාලය නිර්වචනය කරන්න එවිට බහාලුම්වලට සන්නිවේදනය කළ හැකිය . නික් රබෝයිට ස්තූතියි

එක් බහාලුමක් සහ තවත් බහාලුමක් අතර REST ඇමතුම් කිරීමට කැමති අය සඳහා මෙය මෙහි තබන්න. ප්‍රශ්නයට පිළිතුරු සපයයි: ඩොකර් පරිසරයක දේශීය හොස්ට් වෙනුවට භාවිතා කළ යුත්තේ කුමක්ද?

ඔබේ ජාලය පෙනෙන්නේ කෙසේදැයි ලබා ගන්න docker network ls

නව ජාලයක් සාදන්න docker network create -d my-net

පළමු කන්ටේනරය ආරම්භ කරන්න docker run -d -p 5000:5000 --network="my-net" --name "first_container" <MyImage1:v0.1>

පළමු බහාලුම සඳහා ජාල සැකසුම් බලන්න docker inspect first_container. "ජාල": 'my-net' තිබිය යුතුය

දෙවන කන්ටේනරය ආරම්භ කරන්න docker run -d -p 6000:6000 --network="my-net" --name "second_container" <MyImage2:v0.1>

දෙවන බහාලුම සඳහා ජාල සැකසුම් බලන්න docker inspect second_container. "ජාල": 'my-net' තිබිය යුතුය

ඔබේ දෙවන බහාලුමට ssh docker exec -it second_container shහෝ docker exec -it second_container bash.

දෙවන කන්ටේනරය ඇතුළත ඔබට පළමු කන්ටේනරය පිං කළ හැකිය ping first_container. එසේම, ඔබගේ කේත ඇමතුම් http://localhost:5000ආදේශ කළ හැකියhttp://first_container:5000


හරියටම මම සොයන දේ. ස්තූතියි: ඩී
සිමාර් සිං

5

තෝමස්ලෙවිල්ගේ පිළිතුරට මම එකඟ නොවෙමි.

MySQL 172.17.42.1 ට බන්ධනය කිරීමෙන් ධාරකයට දත්ත සමුදාය භාවිතා කිරීම වෙනත් වැඩසටහන් වලක්වනු ඇත. මෙය ක්‍රියාත්මක වන්නේ ඔබගේ සියලු දත්ත සමුදා භාවිතා කරන්නන් ඩොකර් කර ඇත්නම් පමණි.

MySQL බන්ධනය 0.0.0.0 ට සම්බන්ධ කිරීමෙන් ඩීබී බාහිර ලෝකයට විවෘත වනු ඇත, එය ඉතා නරක දෙයක් පමණක් නොව, මුල් ප්‍රශ්න කතුවරයාට කිරීමට අවශ්‍ය දේට පටහැනි වේ. ඔහු පැහැදිලිවම පවසන්නේ "MySQL ක්‍රියාත්මක වන්නේ localhost මත මිස වරායක් බාහිර ලෝකයට නිරාවරණය නොකිරීම නිසා එය localhost සමඟ බැඳී ඇති බවයි"

අයිවන්ට්ගේ අදහස් දැක්වීමට පිළිතුරු දීමට

"ඇයි mysql එක docker0 ට බන්ධනය නොකරන්නේ?"

මෙය කළ නොහැකි ය. MySQL / mariadb ප්‍රලේඛනය පැහැදිලිවම පවසන්නේ අතුරු මුහුණත් කිහිපයකට බැඳිය නොහැකි බවයි. ඔබට බැඳිය හැක්කේ 0, 1, හෝ සියලු අතුරුමුහුණත් වලට පමණි.

නිගමනයක් ලෙස, ඩොකර් බහාලුමකින් ධාරකයේ (localhost only) දත්ත ගබඩාවට ළඟා වීමට මට ක්‍රමයක් සොයාගෙන නැත. එය නියත වශයෙන්ම ඉතා පොදු රටාවක් සේ පෙනේ, නමුත් එය කරන්නේ කෙසේදැයි මම නොදනිමි.


4
ඩොකර් ධාරකයෙන් ඔබට තවමත් 172.17.42.1ලිපිනය භාවිතා කර MySQL සේවාදායකයට සම්බන්ධ විය හැකිය . නමුත් ඔබේ සටහන වෙනත් ආකාරයකින් හරි ය. අසෝ, මම බහාලුම්වලට සම්බන්ධ වීමට ඉඩ දෙන අතරම hostMySQL සේවාදායකයට බැඳී සිටීමට ඉඩ සලසන ජාලකරණ මාදිලිය සමඟ මගේ පිළිතුර සංස්කරණය කළෙමි127.0.0.1
තෝමස්ලෙවිල්

නැත, මා කී පරිදි, mysql localhost සමඟ බැඳී තිබේ නම් ඔබට 172.17.42.1 හා සම්බන්ධ විය නොහැක.
ඕර්සෙල්

4
"MySQL 172.17.42.1 ට බන්ධනය කිරීමෙන් ධාරකයේ දත්ත සමුදාය භාවිතා කිරීම වෙනත් වැඩසටහන් වලක්වනු ඇත." - එය ඇත්ත නොවේ. වෙනත් වැඩසටහන් වලට mysql භාවිතා කළ හැකිය, ඒවා localhost / 127.0.0.1 වෙනුවට 172.17.42.1 හා සම්බන්ධ විය යුතුය.
0x89

මෙම පිළිතුරේ ඇති ගැටළුවට විසඳුම සාමාන්‍යයෙන් MySQL සේවාදායකය බන්ධනය කර 0.0.0.0ෆයර්වෝලයක් සකසා ගැනීමයි. එවිට අන්තර්ජාලයෙන් db ප්‍රවේශ විය නොහැක.
අර්ධ

4

මෙන්න මගේ විසඳුම: එය මගේ නඩුව සඳහා ක්රියා කරයි

  • #bind-address = 127.0.0.1 /etc/mysql/mysql.conf.d හි අදහස් දැක්වීමෙන් දේශීය mysql සේවාදායකය පොදු ප්‍රවේශයට සකසන්න.

  • mysql සේවාදායකය නැවත ආරම්භ කරන්න sudo /etc/init.d/mysql restart

  • ඕනෑම සත්කාරකයකට පරිශීලක මූල ප්‍රවේශය විවෘත කිරීමට පහත විධානය ක්‍රියාත්මක කරන්න mysql -uroot -proot GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;

  • sh ස්ක්‍රිප්ට් සාදන්න: run_docker.sh

    #! බින් / බාෂ්

    HOSTIP = `ip -4 addr show විෂය පථය ගෝලීය dev eth0 | grep inet | awk '{print \ $ 2}' | cut -d / -f 1`


      docker run -it -d --name web-app \
                  --add-host = දේශීය: $ {HOSTIP} \
                  -p 8080: 8080 \
                  -e DATABASE_HOST = $ OST HOSTIP} \
                  -e DATABASE_PORT = 3306 \
                  -e DATABASE_NAME = නිරූපණය \
                  -e DATABASE_USER = root \
                  -e DATABASE_PASSWORD = මූල \
                  sopheamak / springboot_docker_mysql

  
  • ඩොකර්-නිර්මාපකය සමඟ ධාවනය කරන්න

    අනුවාදය: '2.1'

    සේවාවන්:
    ටොම්කට්වාර්: extra_hosts: - "දේශීය: 10.1.2.232" රූපය: sopheamak / springboot_docker_mysql
    වරාය: - 8080: 8080 පරිසරය: - DATABASE_HOST = දේශීය - DATABASE_USER = මූල - DATABASE_PASSWORD = මූල - DATABASE_NAME = නිරූපණය - DATABASE_PORT = 3306


4

විසඳුම් කිහිපයක් මතකයට එයි:

  1. ඔබේ යැපීම් පළමුව බහාලුම්වලට ගෙන යන්න
  2. ඔබගේ අනෙකුත් සේවාවන් බාහිරව ප්‍රවේශ විය හැකි අතර එම බාහිර IP සමඟ ඒවාට සම්බන්ධ වන්න
  3. ජාල හුදකලාවකින් තොරව ඔබේ බහාලුම් ධාවනය කරන්න
  4. ජාලය හරහා සම්බන්ධ වීමෙන් වළකින්න, ඒ වෙනුවට පරිමාවක් ලෙස සවි කර ඇති සොකට් එකක් භාවිතා කරන්න

මෙය කොටුවෙන් පිටතට නොපැමිණීමට හේතුව, බහාලුම් පෙරනිමියෙන් තමන්ගේම ජාල නාම අවකාශයක් සමඟ ධාවනය වීමයි. ඒ කියන්නේ localhost (හෝ 127.0.0.1 ලූප්බැක් අතුරුමුහුණත වෙත යොමු කිරීම) බහාලුමකට අද්විතීයයි. මේ හා සම්බන්ධ වීම කන්ටේනරයටම සම්බන්ධ වන අතර ඩොකර් පිටත හෝ වෙනත් ඩොකර් බහාලුමක් තුළ ක්‍රියාත්මක වන සේවාවන් නොවේ.

විකල්ප 1 : ඔබේ යැපීම බහාලුමක් තුළට ගෙන යා හැකි නම්, මම පළමුව මෙය කරන්නෙමි. අනෙක් අය ඔබේ බහාලුම ඔවුන්ගේම පරිසරය මත ධාවනය කිරීමට උත්සාහ කරන බැවින් එය ඔබගේ යෙදුම් තොගය අතේ ගෙන යා හැකිය. සංක්‍රමණය නොවූ වෙනත් සේවාවන් වෙත තවමත් ළඟා විය හැකි වරාය ඔබේ සත්කාරකයේ ප්‍රකාශයට පත් කළ හැකිය. -p 127.0.0.1:3306:3306ප්‍රකාශිත වරාය සඳහා වාක්‍ය ඛණ්ඩයක් සමඟ සින්ටැක්ස් සමඟ බාහිරව ප්‍රවේශ වීම වළක්වා ගැනීම සඳහා ඔබේ ඩොකර් ධාරකයේ ඇති දේශීය හොස්ට් අතුරුමුහුණතට වරාය ප්‍රකාශයට පත් කළ හැකිය .

විකල්ප 2 : බහාලුම් ඇතුළත සිට ධාරක IP ලිපිනය හඳුනා ගැනීමට විවිධ ක්‍රම තිබේ, නමුත් සෑම එකක්ම ඔවුන් වැඩ කරන ස්ථාන සීමිත සංඛ්‍යාවක් ඇත (උදා: මැක් සඳහා ඩොකර් අවශ්‍ය වේ). වඩාත්ම අතේ ගෙන යා හැකි විකල්පය නම් පරිසර විචල්‍ය හෝ වින්‍යාස ගොනුවක් වැනි දෙයක් සමඟ ඔබේ ධාරක IP කන්ටේනරය තුළට එන්නත් කිරීමයි, උදා:

docker run --rm -e "HOST_IP=$(ip r s 0/0 | awk '{print $3}')" ...

මේ සඳහා ඔබගේ සේවාව එම බාහිර අතුරුමුහුණතට සවන් දීම අවශ්‍ය වේ. බහාලුම් ඇතුළත සිට ධාරක IP ලිපිනය ලබා ගැනීමට වෙනත් ක්‍රම සඳහා, මෙම ලිපිය බලන්න .

විකල්ප 3 : ජාල හුදකලාවකින් තොරව ධාවනය වීම, එනම් සමඟ ධාවනය වීම --net hostයන්නෙන් අදහස් වන්නේ ඔබේ යෙදුම ධාරක ජාල නාම අවකාශයේ ක්‍රියාත්මක වන බවයි. මෙය කන්ටේනරය සඳහා හුදකලා වීම අඩු වන අතර එයින් අදහස් කරන්නේ ඔබට ඩීඑන්එස් සමඟ හවුල් ඩොකර් ජාලයක් හරහා වෙනත් බහාලුම් වලට ප්‍රවේශ විය නොහැකි බවයි (ඒ වෙනුවට, ඔබ වෙනත් බහාලුම් යෙදුම් වෙත ප්‍රවේශ වීමට ප්‍රකාශිත වරායන් භාවිතා කළ යුතුය). නමුත් ධාරකයට පමණක් සවන් දෙන ධාරකයේ වෙනත් සේවාවන් වෙත ප්‍රවේශ වීමට අවශ්‍ය යෙදුම් සඳහා 127.0.0.1, මෙය පහසුම විකල්පය විය හැකිය.

විකල්ප 4 : විවිධ සේවාවන් මඟින් ගොනු පද්ධති පදනම් කරගත් සොකට් එකක් හරහා ප්‍රවේශ වීමට ඉඩ ලබා දේ. මෙම සොකට්ටුව බහාලුම් සවිකර ඇති පරිමාවක් ලෙස කන්ටේනරය තුළට සවි කළ හැකි අතර එමඟින් ජාලය හරහා නොගොස් සත්කාරක සේවාවට ප්‍රවේශ විය හැකිය. ඩෝකර් එන්ජිමට ප්‍රවේශ වීම සඳහා, ඔබ බොහෝ විට /var/run/docker.sockකන්ටේනරය තුළට සවි කිරීම පිළිබඳ උදාහරණ දකිනු ඇත (එම බහාලුම් මූල ධාරකයට ප්‍රවේශය ලබා දෙයි). MySQL සමඟ, ඔබට එවැනි දෙයක් උත්සාහ කළ හැකිය-v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysql.sock අතර පසුව localhostmysql සොකට් භාවිතයට පරිවර්තනය කරන සම්බන්ධ කරන්න .


4

ඔබ ගේට්ටුව දැනගත යුතුයි ! දේශීය සේවාදායකය සමඟ මගේ විසඳුමක් යටතේ එය හෙළිදරව් විය 0.0.0.0:8000එතැන් ක්රියාත්මක docker, අතුරු ජාලයක් හා ලකුණු රුවනයකි වැනි:

docker network create --subnet=172.35.0.0/16 --gateway 172.35.0.1 SUBNET35
docker run -d -p 4444:4444 --net SUBNET35 <container-you-want-run-place-here>

ඉතින්, දැන් ඔබට ඔබේ ලූප්බැක් හරහා පිවිසිය හැකිය http://172.35.0.1:8000


4

මේක උත්සාහ කරන්න:

version: '3.5'
services:
  yourservice-here:
    container_name: container_name
    ports:
      - "4000:4000"
    extra_hosts: # <---- here
      - localhost:192.168.1.202
      - or-vitualhost.local:192.168.1.202

ලබා ගැනීමට 192.168.1.202 , භාවිතා කරයිifconfig

මෙය මට වැඩ කළා. මෙම උපකාරය බලාපොරොත්තු වේ!


3

ඇල්පයින් රූපය භාවිතයෙන් ඔබට ධාරක අයිපී ලබා ගත හැකිය

docker run --rm alpine ip route | awk 'NR==1 {print $3}'

ඔබ සැමවිටම විධානය ක්‍රියාත්මක කිරීම සඳහා ඇල්පයින් භාවිතා කරන බැවින් මෙය වඩාත් අනුකූල වේ.

මාරියානෝගේ පිළිතුරට සමානව ඔබට පරිසර විචල්‍යයක් සැකසීමට එකම විධානයක් භාවිතා කළ හැකිය

DOCKER_HOST=$(docker run --rm alpine ip route | awk 'NR==1 {print $3}') docker-compose up

3

ලිනක්ස් සඳහා, ඔබට දේශීය හොස්ට් සේවාව බැඳී ඇති අතුරු මුහුණත වෙනස් කළ නොහැක

අප විසින් විසඳිය යුතු ගැටළු දෙකක් තිබේ

  1. ධාරකයේ IP ලබා ගැනීම
  2. අපගේ දේශීය හොස්ට් සේවාව ඩෝකර් වෙත ලබා දීම

පළමු පිළිතුර වෙනත් පිළිතුරු මගින් ලබා දී ඇති පරිදි qoomon හි docker -host රූපය භාවිතා කර විසඳිය හැකිය .

ඔබට මෙම කන්ටේනරය ඔබේ අනෙක් බහාලුමට සමාන පාලම් ජාලයට එක් කිරීමට අවශ්‍ය වන අතර එමඟින් ඔබට එයට ප්‍රවේශ විය හැකිය. ඔබේ බහාලුම තුළ ටර්මිනලයක් විවෘත කර ඔබට පිං කළ හැකි බවට සහතික වන්න dockerhost.

bash-5.0# ping dockerhost
PING dockerhost (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.523 ms

දැන්, අමාරු ගැටළුව, සේවාව ඩොකර් වෙත ප්‍රවේශ විය හැකි පරිදි සකස් කිරීම.

අපට ධාරකයේ වරායකට ප්‍රවේශ විය හැකිදැයි පරීක්ෂා කිරීමට අපට ටෙල්නෙට් භාවිතා කළ හැකිය (ඔබට මෙය ස්ථාපනය කිරීමට අවශ්‍ය විය හැකිය).

ගැටළුව වන්නේ අපගේ බහාලුමට SSH වැනි සියලුම අතුරුමුහුණත් සමඟ බැඳී ඇති සේවාවන් වෙත ප්‍රවේශ විය හැකි වීමයි:

bash-5.0# telnet dockerhost 22
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3

නමුත් localhost වෙත පමණක් බැඳී ඇති සේවාවන් ප්‍රවේශ විය නොහැක:

bash-5.0# telnet dockerhost 1025
telnet: can't connect to remote host (172.20.0.2): Connection refused

මෙහි ඇති නිසි විසඳුම වනුයේ සේවාව ඩොකර් පාලම් ජාලයට බැඳීමයි. කෙසේ වෙතත්, මෙම පිළිතුර උපකල්පනය කරන්නේ ඔබට මෙය වෙනස් කළ නොහැකි බවයි. එබැවින් අපි ඒ වෙනුවට භාවිතා කරමුiptables .

පළමුව, ඩොකර් භාවිතා කරන පාලම් ජාලයේ නම අප විසින් සොයාගත යුතුය ifconfig. ඔබ නම් නොකළ පාලමක් භාවිතා කරන්නේ නම්, මෙය එසේ වනු ඇත docker0. කෙසේ වෙතත්, ඔබ නම් කරන ලද ජාලයක් භාවිතා කරන්නේ නම් ඔබට ආරම්භ වන පාලමක් ඇතbr- ඒ වෙනුවට භාවිතා . මගේ br-5cd80298d6f4.

අපට මෙම පාලමේ නම ලැබුණු පසු, මෙම පාලමේ සිට ප්‍රාදේශීය හොස්ට් වෙත ගමන් කිරීමට ඉඩ දිය යුතුය. ආරක්ෂක හේතූන් මත මෙය පෙරනිමියෙන් අක්‍රිය කර ඇත:

sysctl -w net.ipv4.conf.<bridge_name>.route_localnet=1

දැන් අපේ පිහිටුවීමට iptables නීතිය . අපගේ බහාලුමට ඩොකර් පාලම් ජාලයේ වරායන් වෙත පමණක් පිවිසිය හැකි බැවින්, අපගේ සේවාව ඇත්ත වශයෙන්ම මෙම ජාලයේ වරායකට බැඳී ඇති බව මවා පෑමට යන්නෙමු.

මෙය සිදු කිරීම සඳහා, අපි සියලු ඉල්ලීම් වෙත <docker_bridge>:portයොමු කරන්නෙමුlocalhost:port

iptables -t nat -A PREROUTING -p tcp -i <docker_bridge_name> --dport <service_port> -j DNAT --to-destination 127.0.0.1:<service_port>

උදාහරණයක් ලෙස, 1025 වරායේ මගේ සේවය සඳහා

iptables -t nat -A PREROUTING -p tcp -i br-5cd80298d6f4 --dport 1025 -j DNAT --to-destination 127.0.0.1:1025

ඔබට දැන් කන්ටේනරයෙන් ඔබේ සේවාවට ප්‍රවේශ විය හැකිය:

bash-5.0# telnet dockerhost 1025
220 127.0.0.1 ESMTP Service Ready

1
මෙය ඉහත සඳහන් කළ @ ray-d හා සමාන වේ, නමුත් එය මනාව පැහැදිලි කර ඇත. ඔබට ස්තුතියි! මීට අමතරව, ඩෝකර්-රචනා භාවිතා කරන විට, ඩොකර් 0 අතුරුමුහුණතට පැමිණෙන සියලුම පැකට් සඳහා ද PREROUTING දාමයේ DNAT රීතියක් එක් කිරීමට මට සිදු විය: මක්නිසාද යත්, ඩොකර්-රචනා ගොඩනැගීමේදී ඩෝකර් 0 භාවිතා කරන බව පෙනේ (ධාවනය අතරතුර නොවේ, පුදුම සහගත ලෙස): sysctl -w net.ipv4.conf.docker0.route_localnet=1සහiptables -t nat -A PREROUTING -p tcp -i docker0 --dport 1025 -j DNAT --to-destination 127.0.0.1:1025
arvindd

2

CGroups සහ නාම අවකාශයන් බහාලුම් පරිසර පද්ධතියේ ප්‍රධාන කාර්යභාරයක් ඉටු කරයි.

නාම අවකාශය හුදකලා තට්ටුවක් සපයයි. සෑම බහාලුමක්ම වෙනම නාම අවකාශයක ධාවනය වන අතර එහි ප්‍රවේශය එම නාම අවකාශයට සීමා වේ. Cgroups විසින් එක් එක් බහාලුම්වල සම්පත් භාවිතය පාලනය කරන අතර, නාම අවකාශය මඟින් ක්‍රියාවලියකට දැකිය හැකි දේ සහ අදාළ සම්පත වෙත ප්‍රවේශ වීම පාලනය කරයි.

ඔබට අනුගමනය කළ හැකි විසඳුම් ප්‍රවේශය පිළිබඳ මූලික අවබෝධය මෙන්න,

ජාල නාම අවකාශය භාවිතා කරන්න

බහාලුමක් රූපයෙන් ඉවතට ගිය විට, ජාල අතුරු මුහුණතක් නිර්වචනය කර නිර්මාණය කරයි. මෙය කන්ටේනරයට අද්විතීය IP ලිපිනය සහ අතුරු මුහුණත ලබා දෙයි.

$ docker run -it alpine ifconfig

නාම අවකාශය ධාරකයට වෙනස් කිරීමෙන්, කෝටේනර් ජාල එහි අතුරු මුහුණතට හුදකලා නොවනු ඇත, ක්‍රියාවලියට ධාරක යන්ත්‍ර ජාල අතුරු මුහුණතට ප්‍රවේශය ඇත.

$ docker run -it --net=host alpine ifconfig

ක්‍රියාවලිය වරායන් වලට ඇහුම්කන් දෙන්නේ නම්, ඒවා ධාරක අතුරුමුහුණතට සවන් දී බහාලුමට සිතියම් ගත කරනු ඇත.

PID නාම අවකාශය භාවිතා කරන්න Pid නාම අවකාශය වෙනස් කිරීමෙන් බහාලුමකට එහි සාමාන්‍ය විෂය පථයෙන් ඔබ්බට වෙනත් ක්‍රියාවලියක් සමඟ අන්තර් ක්‍රියා කිරීමට ඉඩ ලබා දේ.

මෙම බහාලුම එහි නාම අවකාශයේ ක්‍රියාත්මක වේ.

$ docker run -it alpine ps aux

නාම අවකාශය ධාරකයට වෙනස් කිරීමෙන්, පද්ධතියේ ක්‍රියාත්මක වන අනෙකුත් සියලුම ක්‍රියාදාමයන් ද කන්ටේනරයට දැකිය හැකිය.

$ docker run -it --pid=host alpine ps aux

නාම අවකාශය බෙදා ගැනීම

නිෂ්පාදනයේදී මෙය සිදු කිරීම නරක පුරුද්දකි, මන්ද ඔබ බහාලුම් ආරක්ෂණ ආකෘතියෙන් ඉවත් වී ඇති අතර එය අනාරක්‍ෂිතතාවයන් සඳහා විවෘත විය හැකි අතර කන් ඇසීමට පහසු ප්‍රවේශයකි. මෙය මෙවලම් නිදොස් කිරීම සහ බහාලුම් ආරක්ෂණයේ ඇති අඩුපාඩු අවබෝධ කර ගැනීම සඳහා පමණි.

පළමු බහාලුම nginx සේවාදායකයයි. මෙය නව ජාලයක් නිර්මාණය කර නාම අවකාශයක් සැකසෙනු ඇත. මෙම බහාලුම අලුතින් සාදන ලද ජාල අතුරුමුහුණතේ 80 වරායට සම්බන්ධ වේ.

$ docker run -d --name http nginx:alpine

තවත් බහාලුමක් දැන් මෙම නාම අවකාශය නැවත භාවිතා කළ හැකිය,

$ docker run --net=container:http mohan08p/curl curl -s localhost

එසේම, මෙම බහාලුමට හවුල් බහාලුමක ක්‍රියාවලි සමඟ අතුරු මුහුණත දැකිය හැකිය.

$ docker run --pid=container:http alpine ps aux

යෙදුම වෙනස් කිරීම හෝ නැවත ආරම්භ කිරීමකින් තොරව බහාලුම්වලට වැඩි වරප්‍රසාද ලබා දීමට මෙය ඔබට ඉඩ සලසයි. ඒ හා සමානව ඔබට සත්කාරකයේ ඇති mysql වෙත සම්බන්ධ විය හැකිය, ඔබේ යෙදුම ධාවනය කර නිදොස් කරන්න. එහෙත්, මේ ආකාරයෙන් යාමට එය නිර්දේශ නොකරයි. එය උපකාරී වේ යැයි සිතමි.


1

වින්ඩෝස් යන්ත්‍රය සඳහා: -

ගොඩනඟන කාලය තුළ අහඹු ලෙස ඩොකර් පෝට් එක නිරාවරණය කිරීමට පහත විධානය ක්‍රියාත්මක කරන්න

$docker run -d --name MyWebServer -P mediawiki

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඉහත බහාලුම් ලැයිස්තුවෙන් ඔබට 32768 ලෙස පවරා ඇති වරාය දැකිය හැකිය. ප්‍රවේශ වීමට උත්සාහ කරන්න

localhost:32768 

ඔබට මාධ්‍යවිකි පිටුව දැක ගත හැකිය


5
මෙම පිළිතුර සමහර පරිශීලකයින්ට ප්‍රයෝජනවත් තොරතුරු සැපයිය හැකි වුවද, එය වැරදි මාර්ගයයි ! එය ධාරක යන්ත්‍රයෙන් කන්ටේනරය තුළ ක්‍රියාත්මක වන සේවාවකට ප්‍රවේශ වීම ගැන ය . කෙසේ වෙතත්, ප්‍රශ්නය වූයේ ධාරකයේ ක්‍රියාත්මක වන සේවාවක් බහාලුමෙන් ලබා ගැනීමයි.
අයින්ජොන්


1

බහාලුම් අයිපී සඳහා MySQL හි පරිශීලකයෙකු නිර්මාණය කිරීමෙන් මම එය විසඳා ගත්තෙමි:

$ sudo mysql<br>
mysql> create user 'username'@'172.17.0.2' identified by 'password';<br>
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on database_name.* to 'username'@'172.17.0.2' with grant option;<br>
Query OK, 0 rows affected (0.00 sec)

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
<br>bind-address        = 172.17.0.1

$ sudo systemctl restart mysql.service

ඉන්පසු බහාලුම් මත: jdbc:mysql://<b>172.17.0.1</b>:3306/database_name


මෙය සරලම විසඳුමයි. එය මා වෙනුවෙන් වැඩ කර ඇති අතර මම බොහෝ දේ යොමු කර ඇත්තෙමි
සොපියා ඇල්ෆ්‍රඩ්

0

මම එය කරන ආකාරය සත්කාරක IP පරිසර විචල්‍යය ලෙස බහාලුමට යැවීමයි. බහාලුම පසුව එම විචල්‍යය මඟින් ධාරකයට ප්‍රවේශ වේ.


ඔබ මෙය කරන්නේ කෙසේද යන්න නිදර්ශනය කළ හැකිද? මම මෙම ප්‍රවේශය සඳහා උත්සාහ කළ නමුත් එතරම් සාර්ථකත්වයක්
නොලැබුණි

`docker run -i -t -e HOST = 10.145.2.123 ubuntu root @ ce2a843da3ee: / tmp # ./telnet $ HOST 22 උත්සාහ කිරීම 10.145.2.123 ... 10.145.2.123 වෙත සම්බන්ධ කර ඇත. පැනීමේ චරිතය '^]' වේ. SSH-2.0-OpenSSH_7.4`
F. Kam

0

සෑම දෙයක්ම ක්‍රියාත්මක කිරීම සඳහා, ඔබේ සේවාදායකය සඳහා (කැඩි, එන්ජින්එක්ස්) වින්‍යාසයක් සෑදිය යුතු අතර එහිදී ප්‍රධාන වසම "docker.for.mac.localhost" වනු ඇත. "Http: //docker.for.mac.localhost/api" හි baseURL "http: // localhost / api" හි මෙම ප්‍රතිස්ථාපනය සඳහා

docker-compose.yml

backend:
  restart: always
  image: backend
  build:
    dockerfile: backend.Dockerfile
    context: .
  environment:
    # add django setting.py os.getenv("var") to bd config and ALLOWED_HOSTS CORS_ORIGIN_WHITELIST
    DJANGO_ALLOWED_PROTOCOL: http
    DJANGO_ALLOWED_HOSTS: docker.for.mac.localhost
    POSTGRES_PASSWORD: 123456
    POSTGRES_USER: user
    POSTGRES_DB: bd_name
    WAITDB: "1"
  volumes:
    - backend_static:/app/static
    - backend_media:/app/media
  depends_on:
    - db

frontend:
  restart: always
  build:
    dockerfile: frontend.Dockerfile
    context: .
  image: frontend
  environment:
    #  replace baseURL for axios
    API_URL: http://docker.for.mac.localhost/b/api
    API_URL_BROWSER: http://docker.for.mac.localhost/b/api
    NUXT_HOST: 0.0.0.0
  depends_on:
    - backend

caddy:
  image: abiosoft/caddy
  restart: always
  volumes:
    - $HOME/.caddy:/root/.caddy
    - ./Caddyfile.local:/etc/Caddyfile
    - backend_static:/static
    - backend_media:/media
  ports:
  - 80:80
  depends_on:
    - frontend
    - backend
    - db

Caddyfile.local

http://docker.for.mac.localhost {

  proxy /b backend:5000 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }

  proxy / frontend:3000 {
    header_upstream Host {host}
    header_upstream X-Real-IP {remote}
    header_upstream X-Forwarded-For {remote}
    header_upstream X-Forwarded-Port {server_port}
    header_upstream X-Forwarded-Proto {scheme}
  }

  root /

  log stdout
  errors stdout
  gzip
}

http://docker.for.mac.localhost/static {
  root /static
}

http://docker.for.mac.localhost/media {
  root /media
}

django settings.py

ALLOWED_HOSTS = [os.getenv("DJANGO_ALLOWED_HOSTS")]
    
CORS_ORIGIN_WHITELIST = [f'{os.getenv("DJANGO_ALLOWED_PROTOCOL")}://{os.getenv("DJANGO_ALLOWED_HOSTS")}']

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": os.getenv("POSTGRES_DB"),
        "USER": os.getenv("POSTGRES_USER"),
        "PASSWORD": os.getenv("POSTGRES_PASSWORD"),
        "HOST": "db",
        "PORT": "5432",
    }
}

nuxt.config.js (baseURL විචල්‍යය API_URL පරිසරය අභිබවා යනු ඇත)

axios: {
  baseURL: 'http://127.0.0.1:8000/b/api'
},

0

ඔබ ඩොකර්-රචනා භාවිතා කරන්නේ නම්, සමහර විට එය ක්‍රියාත්මක විය හැකිය:

iptables -I INPUT ! -i eth0 -p tcp --dport 8001 -j ACCEPT

මෙම eth0බව සබඳතා අන්තර්ජාල අතුරු මුහුණත ඔබගේ ජාලය වන අතර, 8081සත්කාරක සේවාදායකය වරාය

iptables රීතිය සඳහා හොඳම ක්‍රමය නම් iptables TRACE

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.