Я создал следующее Dockerfile
для запуска приложения с весенней загрузкой: myapp
в экземпляре EC2.
# Use an official java runtime as a parent image
FROM openjdk:8-jre-alpine
# Add a user to run our application so that it doesn't need to run as root
RUN adduser -D -s /bin/sh myapp
# Set the current working directory to /home/myapp
WORKDIR /home/myapp
#copy the app to be deployed in the container
ADD target/myapp.jar myapp.jar
#create a file entrypoint-dos.sh and put the project entrypoint.sh content in it
ADD entrypoint.sh entrypoint-dos.sh
#Get rid of windows characters and put the result in a new entrypoint.sh in the container
RUN sed -e 's/\r$//' entrypoint-dos.sh > entrypoint.sh
#set the file as an executable and set myapp as the owner
RUN chmod 755 entrypoint.sh && chown myapp:myapp entrypoint.sh
#set the user to use when running the image to myapp
USER myapp
# Make port 9010 available to the world outside this container
EXPOSE 9010
ENTRYPOINT ["./entrypoint.sh"]
Поскольку мне нужен доступ к журналам myapp
из EC2 хост-машина, я хочу подключить папку к папке журналов, которая находится в контейнере «myapp», здесь: /home/myapp/logs
Это команда, которую я использую для запуска образа в консоли ec2:
docker run -p 8090:9010 --name myapp myapp:latest -v home/ec2-user/myapp:/home/myapp/logs
Контейнер запускается без каких-либо проблем, но монтирование не достигается, как отмечено в следующем docker inspect
извлечении:
...
"Mounts": [],
...
Я пробовал следующие действия, но закончил с тот же результат:
--mount type=bind
вместо -v
использовать тома вместо bind-mount
Я даже попробовал --privileged
вариант
В Dockerfile: я пытался использовать USER root
вместо myapp
Полагаю, это не имеет ничего общего с машиной ec2, кроме моего контейнера. Поскольку запуск других контейнеров с bind-mounts на том же хосте работает как чудо.
Я почти уверен, что испортил свой Dockerfile.
Но что я делаю не так в этом Dockerfile?
или
Что я пропускаю?
Здесь у вас есть entrypoint.sh
при необходимости :
#!/bin/sh
echo "The app is starting ..."
exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar -Dspring.profiles.active=${SPRING_ACTIVE_PROFILES} "${HOME}/myapp.jar" "$@"