Я пытаюсь отладить сборку докера на дроплете Digital Ocean, но не могу получить доступ к каким-либо журналам.
Когда я запускаю команду сборки, она возвращает код завершения 137. Это моя команда сборки:
docker build --build-arg env=staging -t name:tag .
Я знаю, что это связано с нехваткой памяти, но вместопросто увеличивая объем оперативной памяти на капле, я хотел бы посмотреть, смогу ли я оптимизировать изображение.( В некотором роде, следуя этому руководству )
Я могу найти выход из контейнера, запустив docker ps -a
, но когда я пытаюсь получить доступ к журналам, запустив docker logs <CONTAINTER_ID>
, я получаю следующую ошибку:
Error response from daemon: configured logging driver does not support reading
Поэтому я попытался настроить драйвер ведения журнала , добавив файл daemon.json
к /etc/docker
со следующим кодом:
{
"log-driver": "json-file"
}
Когда я проверяю run docker info --format '{{.LoggingDriver}}'
, я возвращаюсь json-file
- насколько я могу судить, это текущий драйвер ведения журнала по умолчанию.
Но когда я пытаюсь создать образ снова (он нене работает, ошибка 137, как и ожидалось), я по-прежнему получаю ту же ошибку при попытке доступа к журналам:
Error response from daemon: configured logging driver does not support reading
Когда я пытаюсь проверить драйвер ведения журнала, контейнериспользуя: docker inspect -f '{{.HostConfig.LogConfig.Type}}' 3016507bd1dc
Я получаю none
назад.
Кто-нибудь, что мне не хватает или как я могу получить журналы неудачной сборки?
--- dockerfile --
Приложение Node с угловым клиентом
FROM node:11.14
ARG env
ENV NODE_ENV $env
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
COPY ./client/ ./client/
RUN npm install
WORKDIR /usr/src/app/client
RUN npm install && \
npm install --only=dev && \
npm install -g @angular/cli --unsafe && \
npm rebuild node-sass && \
ng build --configuration=$env
WORKDIR /usr/src/app
# Bundle app source
COPY . .
EXPOSE 3040
CMD [ "npm", "start" ]
--- jenkinsfile ---
pipeline {
agent any
stages {
stage('clean') {
steps {
sh 'docker system prune -a -f || true'
}
}
stage('build staging') {
when {
branch 'dev'
}
steps {
sh '''docker build --build-arg env=staging -t NAME:stage .
docker stop NAME-stage-c && docker rm NAME-stage-c || true
docker run -d -p 3041:3040 --name NAME-stage-c NAME:stage
'''
}
}
stage('cleanup') {
steps {
sh 'docker system prune -a -f || true'
}
}
}
}