Я новичок в докере и борюсь с подключением двух отдельных сервисов с помощью docker-compose. Мне нужно иметь возможность писать в базу данных и читать из нее. Также необходимо ping
из каждого контейнера в другой.
Я делаю docker exec -ti node-app ping mongo
и все в порядке. Я делаю docker exec -ti mongo ping node-app
и получаю эту ошибку:
Ошибка выполнения OCI во время выполнения: ошибка exec: container_linux.go: 348: запуск процесса контейнера вызвал "exec: \" ping \ ": исполняемый файл не найденв $ PATH ": неизвестно
Кроме того, при запуске docker-compose появляется следующая ошибка: Сервер работает ... node-app |{MongoNetworkError: не удалось подключиться к серверу [mongo: 27017] при первом подключении [MongoNetworkError: connect ECONNREFUSED 172.21.0.3:27017]
docker-compose
version: '3'
services:
app:
container_name: node-app
restart: always
build: .
ports:
- '80:3000'
networks:
- net
mongo:
container_name: mongo
image: mongo
restart: always
ports:
- 27017:27017
networks:
- net
networks:
net:
driver: bridge
Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 35.158.153.133/80 # my aws public ip address
CMD ["npm", "start"]
index.js
mongoose
.connect(
'mongodb://mongo:27017/mongo',
{ useNewUrlParser: true }
)
.then(() => console.log('MongoDB Connected'))
.catch(err => console.log(err));
const Item = require('./models/Item');
app.get('/', (req, res) => {
Item.find()
.then(items => res.render('index', { items }))
.catch(err => res.status(404).json({ msg: 'No items found' }));
});
app.post('/item/add', (req, res) => {
const newItem = new Item({
name: req.body.name
});
newItem.save().then(item => res.redirect('/'));
});