Unë kam dy kontejnerë doker. Njëri është serveri java, që funksionon në portin 8080 me API / drejtues të tjerë. Një kontejner tjetër është serveri i thjeshtë nodejs me faqe index.html ku po kryhet thirrja ajax për të ruajtur drejtuesin e ri. URL-ja në skedarin js është: const URL = "http://storage:8080/drivers";
Kur i drejtoj ato duke përdorur vetëm docker dhe krijoj rrjet për ta, komunikimi mes tyre funksionon mirë. Por kur i ekzekutoj të dy kontejnerët duke përdorur docker-compose, atëherë marr statusin "(dështuar) net::ERR_NAME_NOT_RESOLVED"
Kur hap bash të ndonjë prej këtyre kontejnerëve dhe ekzekutoj 'ping storage', normalisht marr pako.
Çfarë më mungon?
DockerFile për serverin java:
FROM java:8
VOLUME /tmp
ADD target/docker-project-1.0-SNAPSHOT.jar app.jar
EXPOSE 8080
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
DockerFile për serverin nodejs:
FROM node:argon
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN npm install connect serve-static
COPY . /usr/src/app
EXPOSE 8081
CMD ["node", "server.js"]
Skedari docker-compose.yml:
version: '2.1'
services:
client:
image: glasierr/js-client
networks:
default:
aliases:
- "client"
links:
- "storage"
ports:
- "8081:8081"
storage:
image: glasierr/drivers-storage
networks:
default:
aliases:
- "storage"
ports:
- "8080:8080"
expose:
- "8080"
Skript JS:
const URL = "http://storage:8080/drivers";
$.ajax({
headers: {
'Content-Type': 'application/json'
},
type: "POST",
url: URL,
data: JSON.stringify({
licenceId: licenceId,
name: name,
surname: surname,
email: email
}),
dataType: "json"
});
docker exec -it desktop_client_1 curl storage:8080/drivers
do të kthejë një grup bosh. Mënyra më e mirë do të ishte të proksoni kërkesën në mënyrë që të mos keni nevojë të përdorni hapësirën ruajtëse nga jashtë 20.11.2016