This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
технология_docker [2025/03/01 15:20] val [Создание образа для приложения с использованием Dockerfile] |
технология_docker [2025/06/12 08:50] (current) val [Создание образа для приложения с использованием Dockerfile] |
||
---|---|---|---|
Line 59: | Line 59: | ||
# docker info | # docker info | ||
+ | </code> | ||
+ | ==== Запуск контейнеров ==== | ||
+ | * [[https://stackoverflow.com/questions/41694329/docker-run-override-entrypoint-with-shell-script-which-accepts-arguments|Docker run override entrypoint with shell script which accepts arguments]] | ||
+ | * Запуск сервиса TACACS+ в [[Сервис TACACS+#Docker]] | ||
+ | |||
+ | <code> | ||
# docker run hello-world | # docker run hello-world | ||
Line 174: | Line 180: | ||
* [[#Запуск в режиме демона и подключение к контейнеру]] из полученного образа | * [[#Запуск в режиме демона и подключение к контейнеру]] из полученного образа | ||
==== Создание образа для приложения с использованием Dockerfile ==== | ==== Создание образа для приложения с использованием Dockerfile ==== | ||
+ | |||
+ | * [[https://habr.com/ru/companies/slurm/articles/329138/|ENTRYPOINT vs CMD: назад к основам]] | ||
* [[Сервис TACACS+]] | * [[Сервис TACACS+]] | ||
Line 244: | Line 252: | ||
=== Приложение python pywebd === | === Приложение python pywebd === | ||
- | * [[Язык программирования Python]] | + | * [[Язык программирования Python#Flask Gunicorn]] |
* [[https://stackoverflow.com/questions/49955097/how-do-i-add-a-user-when-im-using-alpine-as-a-base-image|How do I add a user when I'm using Alpine as a base image?]] | * [[https://stackoverflow.com/questions/49955097/how-do-i-add-a-user-when-im-using-alpine-as-a-base-image|How do I add a user when I'm using Alpine as a base image?]] | ||
Line 276: | Line 284: | ||
#COPY --chown=myuser:myuser app.py . | #COPY --chown=myuser:myuser app.py . | ||
- | #COPY --chown=myuser:myuser etc/pywebd/ /etc/pywebd/ | + | ### COPY --chown=myuser:myuser etc/pywebd/ /etc/pywebd/ |
- | #COPY --chown=myuser:myuser index.html /var/www/ | + | ### COPY --chown=myuser:myuser index.html /var/www/ |
### ADD www.tgz /var/ | ### ADD www.tgz /var/ | ||
Line 296: | Line 304: | ||
* [[#Запуск в режиме демона и подключение к контейнеру]] | * [[#Запуск в режиме демона и подключение к контейнеру]] | ||
+ | |||
+ | === Приложение python pywebd2 === | ||
+ | |||
+ | * [[Язык программирования Python#FastAPI Uvicorn]] | ||
+ | |||
+ | <code> | ||
+ | ~/pywebd2# cat Dockerfile | ||
+ | </code><code> | ||
+ | FROM python:3.11-alpine | ||
+ | |||
+ | RUN pip install --root-user-action=ignore --upgrade pip | ||
+ | |||
+ | RUN pip install poetry | ||
+ | |||
+ | RUN adduser -D myuser | ||
+ | USER myuser | ||
+ | WORKDIR /home/myuser | ||
+ | |||
+ | COPY --chown=myuser:myuser . . | ||
+ | |||
+ | RUN poetry install | ||
+ | |||
+ | ENTRYPOINT ["poetry", "run"] | ||
+ | CMD ["python3", "app.py"] | ||
+ | </code><code> | ||
+ | ~/pywebd2# time docker build -t pywebd2 . | ||
+ | |||
+ | # docker run -d -p 8000 --rm pywebd2 | ||
+ | |||
+ | # docker run -d -p 4080 --rm pywebd2 uvicorn app:app --reload --host 0.0.0.0 --port 4080 | ||
+ | </code> | ||
=== Приложение golang gowebd === | === Приложение golang gowebd === | ||
Line 549: | Line 588: | ||
# docker-compose rm | # docker-compose rm | ||
+ | |||
+ | # docker volume inspect root_vol1 | ||
# docker volume rm root_vol1 | # docker volume rm root_vol1 | ||
Line 669: | Line 710: | ||
<code> | <code> | ||
~/gowebd# time docker run \ | ~/gowebd# time docker run \ | ||
- | -v $(pwd):/workspace --rm\ | + | -v $(pwd):/workspace \ |
+ | -v ~/.docker/config.json:/kaniko/.docker/config.json \ | ||
gcr.io/kaniko-project/executor:latest \ | gcr.io/kaniko-project/executor:latest \ | ||
- | --skip-tls-verify --log-timestamp\ | + | --skip-tls-verify --log-timestamp \ |
--dockerfile=./Dockerfile \ | --dockerfile=./Dockerfile \ | ||
--context=/workspace \ | --context=/workspace \ | ||
- | --destination=server.corp13.un:5000/student/gowebd \ | + | --destination=server.corpX.un:5000/student/gowebd |
- | --cache=true --cache-copy-layers --cache-repo server.corp13.un:5000/dev-cache --use-new-run \ | + | |
- | --verbosity debug | + | |
</code><code> | </code><code> | ||
или, интерактивно: | или, интерактивно: | ||
Line 682: | Line 722: | ||
root@ubuntu:~/gowebd# docker run -it \ | root@ubuntu:~/gowebd# docker run -it \ | ||
-v $(pwd):/workspace --rm --entrypoint "/bin/sh" \ | -v $(pwd):/workspace --rm --entrypoint "/bin/sh" \ | ||
+ | -v ~/.docker/config.json:/kaniko/.docker/config.json \ | ||
gcr.io/kaniko-project/executor:debug | gcr.io/kaniko-project/executor:debug | ||
Line 687: | Line 728: | ||
--dockerfile=./Dockerfile \ | --dockerfile=./Dockerfile \ | ||
--context=/workspace \ | --context=/workspace \ | ||
- | --destination=server.corp13.un:5000/student/gowebd | + | --destination=server.corpX.un:5000/student/gowebd |
</code><code> | </code><code> | ||
тестируем результат: | тестируем результат: | ||
</code><code> | </code><code> | ||
# docker run --pull=always --name gowebd -itd --rm \ | # docker run --pull=always --name gowebd -itd --rm \ | ||
- | -p 8000:80 server.corp13.un:5000/student/gowebd | + | -p 8000:80 server.corpX.un:5000/student/gowebd |
</code> | </code> | ||
==== Приложение apwebd ==== | ==== Приложение apwebd ==== |