Projekt

Allgemein

Profil

Aktionen

Podman

install

yum install podman
yum install podman-compose

create pod

sudo podman pod create --name=app-example -p 8099:80

add container to pod

e.g. wordpress

sudo mkdir /opt/podman.pod
sudo mkdir /opt/podman.pod/app-example
sudo mkdir /opt/podman.pod/app-example/c_db
sudo mkdir /opt/podman.pod/app-example/c_db/var
sudo mkdir /opt/podman.pod/app-example/c_db/var/lib
sudo mkdir /opt/podman.pod/app-example/c_db/var/lib/mysql
sudo mkdir /opt/podman.pod/app-example/c_wp
sudo mkdir /opt/podman.pod/app-example/c_wp/var
sudo mkdir /opt/podman.pod/app-example/c_wp/var/www
sudo mkdir /opt/podman.pod/app-example/c_wp/var/www/html

sudo podman run -d --restart=always --pod=app-example -e MYSQL_ROOT_PASSWORD="root" -e MYSQL_DATABASE="wordpress" -e MYSQL_USER="wpuser" -e MYSQL_PASSWORD="password" -v /etc/localtime:/etc/localtime:ro -v /opt/podman.pod/app-example/c_db/var/lib/mysql:/var/lib/mysql:Z --name=app-example-db mariadb
sudo podman run -d --restart=always --pod=app-example -e WORDPRESS_DB_NAME="wordpress" -e WORDPRESS_DB_USER="wpuser" -e WORDPRESS_DB_PASSWORD="password" -e WORDPRESS_DB_HOST="127.0.0.1" -v /etc/localtime:/etc/localtime:ro -v /opt/podman.pod/app-example/c_wp/var/www/html:/var/www/html:Z --name app-example-wp wordpress

create systemd-unit files

cd /opt/podman.pod/app-example
sudo podman generate systemd --files --name app-example
sudo cp pod-*.service /etc/systemd/system/.
sudo cp container-*.service /etc/systemd/system/.

create container

see also:
https://www.redhat.com/sysadmin/wordpress-container
https://rancher.com/learning-paths/how-to-build-and-run-your-own-container-images/
https://docs.podman.io/en/latest/markdown/podman-build.1.html

create ~/container.user/wordpress.user/Dockerfile

FROM docker.io/rockylinux/rockylinux
MAINTAINER jke <j@keihsler.com>
RUN dnf module enable -y php:7.4
RUN yum install -y mariadb-server mariadb php php-apcu php-intl php-mbstring php-xml php-json php-mysqlnd crontabs cronie iputils net-tools;yum clean all
RUN systemctl enable mariadb
RUN systemctl enable httpd
RUN systemctl disable systemd-update-utmp.service
ENTRYPOINT ["/sbin/init"]
CMD ["/sbin/init"]
cd ~/container.user/wordpress.user/
podman build -t wordpress_user .

compose pod

create ~/compose.user/nextcloud.user/compose.yml

version: '3'

services:

  db:
    image: mariadb
    container_name: nextcloud-mariadb
    networks:
      - nextcloud_network
    volumes:
      - db:/opt/nextcloud/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=XXXXX
      - MYSQL_PASSWORD=XXXXX
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped

  app:
    image: nextcloud:latest
    container_name: nextcloud-app
    ports:
      - 9099:80
    networks:
      - nextcloud_network
    depends_on:
      - db
    volumes:
      - nextcloud:/var/www/html
      - ./app/config:/var/www/html/config
      - ./app/custom_apps:/var/www/html/custom_apps
      - ./app/data:/var/www/html/data
      - ./app/themes:/opt/nextcloud/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=ak-i40-cloud.openfab.org
    restart: unless-stopped

volumes:
  nextcloud:
  db:

networks:
  nextcloud_network:
podman-compose -f ~/compose.user/nextcloud.user/compose.yml up

shell-access to inside container

podman exec -it -u root nc_example.com-nc /bin/sh

administration

list (dangling) images

podman images
podman images -f dangling=true

remove dangling images

best is to make sure that all containers needed are up and running before removing dangling containers

podman system prune

Von Jeremias Keihsler vor 9 Monaten aktualisiert · 9 Revisionen