This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
технология_docker [2026/01/20 18:10] val [Приложение apwebd] |
технология_docker [2026/07/30 12:07] (current) val [Создание образа для приложения с использованием Dockerfile] |
||
|---|---|---|---|
| Line 4: | Line 4: | ||
| * [[https://www.upguard.com/articles/docker-vs-lxc|Docker vs LXC]] | * [[https://www.upguard.com/articles/docker-vs-lxc|Docker vs LXC]] | ||
| * [[https://youtu.be/QF4ZF857m44|youtube/Артем Матяшов/Основы Docker. Большой практический выпуск]] | * [[https://youtu.be/QF4ZF857m44|youtube/Артем Матяшов/Основы Docker. Большой практический выпуск]] | ||
| + | |||
| + | * [[https://habr.com/ru/articles/1041784/|Best Practices по Dockerfile: от базового образа и кеша до SBOM, Cosign и CI/CD]] | ||
| Line 31: | Line 33: | ||
| "registry-mirrors": ["https://mirror.gcr.io"] | "registry-mirrors": ["https://mirror.gcr.io"] | ||
| } | } | ||
| + | </code><code> | ||
| + | # service docker reload | ||
| </code> | </code> | ||
| - | |||
| ==== Настройка загрузки образов через proxy ==== | ==== Настройка загрузки образов через proxy ==== | ||
| Line 66: | Line 69: | ||
| <code> | <code> | ||
| # docker run hello-world | # docker run hello-world | ||
| + | |||
| + | # docker run -it --rm busybox | ||
| # docker events --since '10m' | # docker events --since '10m' | ||
| Line 143: | Line 148: | ||
| #!/bin/sh | #!/bin/sh | ||
| - | /etc/init.d/inetutils-inetd start | + | #/etc/init.d/inetutils-inetd start |
| + | /usr/sbin/inetutils-inetd -d | ||
| bash | bash | ||
| Line 187: | Line 193: | ||
| <code> | <code> | ||
| lan# mkdir -p /root/webd/ && cd /root/webd/ | lan# mkdir -p /root/webd/ && cd /root/webd/ | ||
| - | или | ||
| - | gitlab-runner@server:~$ mkdir -p ~/webd/webd/ && cd ~/webd/webd/ | ||
| lan:~/webd# scp server:/usr/local/sbin/webd . | lan:~/webd# scp server:/usr/local/sbin/webd . | ||
| - | или | ||
| - | server# cp /usr/local/sbin/webd . | ||
| - | или | ||
| </code> | </code> | ||
| * [[Средства программирования shell#Web сервер на shell]] | * [[Средства программирования shell#Web сервер на shell]] | ||
| Line 203: | Line 204: | ||
| #!/bin/sh | #!/bin/sh | ||
| - | /etc/init.d/inetutils-inetd start | + | #/etc/init.d/inetutils-inetd start |
| + | inetutils-inetd --foreground & | ||
| touch /var/log/webd.log | touch /var/log/webd.log | ||
| Line 219: | Line 221: | ||
| #FROM debian | #FROM debian | ||
| FROM debian:bookworm | FROM debian:bookworm | ||
| + | |||
| + | #ENV DEBIAN_FRONTEND=noninteractive | ||
| RUN cp /usr/share/zoneinfo/Etc/GMT-3 /etc/localtime \ | RUN cp /usr/share/zoneinfo/Etc/GMT-3 /etc/localtime \ | ||
| Line 253: | Line 257: | ||
| * [[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?]] | ||
| + | * [[https://hub.docker.com/_/python]] | ||
| <code> | <code> | ||
| :~/pywebd$ ## mkdir etc/; cp -rv /etc/pywebd/ etc/ | :~/pywebd$ ## mkdir etc/; cp -rv /etc/pywebd/ etc/ | ||
| Line 263: | Line 268: | ||
| </code><code> | </code><code> | ||
| FROM python:3.11-alpine | FROM python:3.11-alpine | ||
| + | #FROM python:3.14-alpine | ||
| #RUN pip install --root-user-action=ignore --upgrade pip | #RUN pip install --root-user-action=ignore --upgrade pip | ||
| Line 275: | Line 281: | ||
| #ENV PATH="/home/myuser/.local/bin:${PATH}" | #ENV PATH="/home/myuser/.local/bin:${PATH}" | ||
| + | #ENV https_proxy=http://proxy.isp.un:3128 | ||
| RUN pip install -r requirements.txt | RUN pip install -r requirements.txt | ||
| #RUN pip install --user -r requirements.txt | #RUN pip install --user -r requirements.txt | ||
| Line 282: | Line 289: | ||
| #COPY --chown=myuser:myuser app.py . | #COPY --chown=myuser:myuser app.py . | ||
| + | |||
| + | ## COPY --chown=myuser:myuser gunicorn.conf.py . | ||
| ## COPY --chown=myuser:myuser etc/ /etc/ | ## COPY --chown=myuser:myuser etc/ /etc/ | ||
| ## COPY --chown=myuser:myuser var/ /var/ | ## COPY --chown=myuser:myuser var/ /var/ | ||
| Line 287: | Line 296: | ||
| ### ADD www.tgz /var/ | ### ADD www.tgz /var/ | ||
| - | ### ENV PYWEBD_PORT=4080 | + | # ENV PYWEBD_PORT=4080 |
| - | ### ENV PYWEBD_DOC_ROOT=/var/www/ | + | # ENV PYWEBD_DOC_ROOT=/var/www/ |
| ### EXPOSE 4080 | ### EXPOSE 4080 | ||
| Line 294: | Line 303: | ||
| ENTRYPOINT ["python"] | ENTRYPOINT ["python"] | ||
| CMD ["app.py"] | CMD ["app.py"] | ||
| + | # ENTRYPOINT ["gunicorn","-c","gunicorn.conf.py","app:app"] | ||
| </code><code> | </code><code> | ||
| :~/pywebd$ time docker build -t pywebd . | :~/pywebd$ time docker build -t pywebd . | ||
| Line 313: | Line 323: | ||
| </code><code> | </code><code> | ||
| FROM python:3.11-alpine | FROM python:3.11-alpine | ||
| + | #FROM python:3.14.5-alpine | ||
| RUN pip install --root-user-action=ignore --upgrade pip | RUN pip install --root-user-action=ignore --upgrade pip | ||
| Line 399: | Line 410: | ||
| <code> | <code> | ||
| - | $ MY_ID=$(docker run -d --rm gowebd) | + | MY_ID=$(docker run -d --rm gowebd) |
| - | $ MY_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $MY_ID) | + | MY_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $MY_ID) |
| - | $ docker run --rm alpine/curl -sS $MY_IP | + | docker run --rm alpine/curl -sS $MY_IP |
| - | $ docker stop $MY_ID | + | docker stop $MY_ID |
| </code> | </code> | ||
| Line 541: | Line 552: | ||
| * [[https://kompose.io/|Go from Docker Compose to Kubernetes]] | * [[https://kompose.io/|Go from Docker Compose to Kubernetes]] | ||
| + | |||
| + | ==== Установка ==== | ||
| <code> | <code> | ||
| # apt install docker-compose docker.io | # apt install docker-compose docker.io | ||
| + | </code> | ||
| + | ==== Пример развертывания ==== | ||
| + | <code> | ||
| # cat docker-compose.yml | # cat docker-compose.yml | ||
| </code><code> | </code><code> | ||
| Line 723: | Line 739: | ||
| -v $(pwd):/workspace \ | -v $(pwd):/workspace \ | ||
| -v ~/.docker/config.json:/kaniko/.docker/config.json \ | -v ~/.docker/config.json:/kaniko/.docker/config.json \ | ||
| + | -e KANIKO_REGISTRY_MIRROR="mirror.gcr.io" \ | ||
| gcr.io/kaniko-project/executor:latest \ | gcr.io/kaniko-project/executor:latest \ | ||
| --skip-tls-verify --log-timestamp \ | --skip-tls-verify --log-timestamp \ | ||