Commit ee6899b4 by Chalermpong

add README

parent edcc7e2a
# ใช้ base image เป็น Ubuntu
FROM ubuntu:20.04
# ตั้งค่า environment variables เพื่อไม่ให้ Docker รอการป้อนข้อมูลจากผู้ใช้
ENV DEBIAN_FRONTEND=noninteractive
# อัพเดต package list และติดตั้ง dependencies
RUN apt-get update && apt-get install -y \
curl \
gnupg2 \
lsb-release \
&& rm -rf /var/lib/apt/lists/*
# เพิ่ม repository ของ SaltStack
RUN curl -fsSL https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/SALTSTACK-GPG-KEY.pub | apt-key add -
RUN echo "deb http://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" > /etc/apt/sources.list.d/saltstack.list
# อัพเดต package list และติดตั้ง Salt Master และ Salt API
RUN apt-get update && apt-get install -y \
salt-master \
salt-api \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -s /bin/bash saltuser && echo "saltuser:saltpassword" | chpasswd
# เปิดพอร์ตที่ใช้โดย Salt Master และ Salt API
EXPOSE 4505 4506 8000
# คัดลอกไฟล์การตั้งค่า (ถ้ามี) ไปยังตำแหน่งที่ถูกต้อง
COPY ./master /etc/salt/master
COPY ./salt-api.service /etc/systemd/system
COPY ./salt-master.service /etc/systemd/system
# เริ่มต้น Salt Master และ Salt API เมื่อ container รัน
CMD ["sh", "-c", "salt-master -d && salt-api -d && tail -f /var/log/salt/master"]
version: '3.8'
services:
salt-master:
build: .
container_name: salt-master
ports:
- "4505:4505"
- "4506:4506"
- "8000:8000"
environment:
- SALT_USER=saltuser
- SALT_PASSWORD=saltpassword
volumes:
- ./salt-master:/etc/salt/master.d
pg_grafana:
image: harbor.nexpie.com/flowstack/postgresql:1.0.1-0-3af5ae67
restart: always
environment:
- POSTGRES_DB =${POSTGRES_DB:-postgres}
- POSTGRES_USER=${POSTGRES_USER:-user} # Set environment variable POSTGRES_USER with default value 'user'
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} # Set environment variable POSTGRES_PASSWORD with default value 'password' (not recommended for security reasons)
volumes:
- postgres:/data/postgres # Mount named volume 'postgres' to /data/postgres in container
# ports:
# - "5432:5432" # Map host port 5432 to container port 5432
networks:
- postgres # Connect container to the 'postgres' network
grafana:
restart: always # Restart container automatically on failure
depends_on:
- pg_grafana # Wait for pg_grafana service to be up before starting
image: harbor.nexpie.com/flowstack/grafana:10.3.1-1 # Use specific Grafana image
# image: grafana/grafana-enterprise
environment:
- GF_FLOWSTACK_POSTGRES_ENDPOINT=${POSTGRES_ENDPOINT:-pg_grafana}:${POSTGRES_PORT:-5432} # Set Grafana database host (pg_grafana service name)
- GF_FLOWSTACK_POSTGRES_DATABASE=${POSTGRES_DB:-postgres} # Set Grafana database name (environment variable not defined)
- GF_FLOWSTACK_POSTGRES_USER=${POSTGRES_USER:-user} # Incorrect variable reference, use ${POSTGRES_USER}
- GF_FLOWSTACK_POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} # Incorrect variable reference, use ${POSTGRES_PASSWORD}
# - GF_DATABASE_SSL_MODE=disable # Disable SSL mode for database connection
ports:
- "43000:3000" # Map host port 43000 to container port 3000 (default Grafana port)
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
- PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} # Set default email for pgAdmin with fallback
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_DEFAULT_PASSWORD:-admin} # Set default password for pgAdmin with fallback
- PGADMIN_CONFIG_SERVER_MODE=False # Disable server mode for pgAdmin
volumes:
- pgadmin:/var/lib/pgadmin # Mount named volume 'pgadmin' to /var/lib/pgadmin in container
ports:
- "${PGADMIN_PORT:-8888}:80" # Map host port defined by PGADMIN_PORT (default 8888) to container port 80
networks:
- postgres # Connect container to the 'postgres' network
restart: unless-stopped # Restart container only if it exits abnormally
networks:
postgres:
driver: bridge # Create a bridge network for communication
volumes:
postgres: # Empty volume definition for pg_grafana
pgadmin: # Empty volume definition for pgadmin
This diff is collapsed. Click to expand it.
[Unit]
Description=Salt API
After=network.target
Requires=salt-master.service
[Service]
Type=simple
User=root
ExecStart=/usr/bin/salt-api
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
[Unit]
Description=The Salt Master Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/salt-master
[Install]
WantedBy=multi-user.target
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment