Enhance Docker Setup with User Management, Logging, and Startup Script
This commit enhances the Docker setup by: - Creating a dedicated programmer user with UID 1000 - Adding logrotate for log management - Updating the Dockerfile to use the new user and expose port 7860 - Adding a startup script to manage MCP server and Open Code processes - Updating the Makefile to include interactive mode and container naming - Configuring log rotation for server logs
This commit is contained in:
30
Dockerfile
30
Dockerfile
@@ -5,6 +5,9 @@ FROM python:3.11-slim
|
|||||||
RUN echo "deb http://deb.debian.org/debian testing main" \
|
RUN echo "deb http://deb.debian.org/debian testing main" \
|
||||||
> /etc/apt/sources.list.d/testing.list
|
> /etc/apt/sources.list.d/testing.list
|
||||||
|
|
||||||
|
# Création d'un utilisateur programmeur avec UID 1000 et home dans /home/programmer
|
||||||
|
RUN useradd -u 1000 -m -d /home/programmer -s /bin/bash programmer
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Installer les outils de développement Go et Rust
|
# Installer les outils de développement Go et Rust
|
||||||
@@ -24,7 +27,8 @@ RUN apt-get update && \
|
|||||||
black \
|
black \
|
||||||
flake8 \
|
flake8 \
|
||||||
mypy \
|
mypy \
|
||||||
isort
|
isort \
|
||||||
|
logrotate
|
||||||
|
|
||||||
COPY tools tools
|
COPY tools tools
|
||||||
|
|
||||||
@@ -50,12 +54,30 @@ RUN cargo binstall --strategies crate-meta-data jj-cli
|
|||||||
# Installer le SDK MCP Python
|
# Installer le SDK MCP Python
|
||||||
RUN pip install --no-cache-dir ruff fastmcp ipython
|
RUN pip install --no-cache-dir ruff fastmcp ipython
|
||||||
|
|
||||||
|
RUN curl -fsSL https://opencode.ai/install | bash \
|
||||||
|
&& mv /root/.opencode/bin/opencode /usr/local/bin/
|
||||||
|
|
||||||
# Copier le serveur
|
# Copier le serveur
|
||||||
COPY src .
|
COPY src .
|
||||||
|
|
||||||
|
# Copier le script de démarrage
|
||||||
|
COPY docker_startup.sh .
|
||||||
|
COPY opencode.json ~/.config/opencode
|
||||||
|
|
||||||
# Exposer le port
|
# Exposer le port
|
||||||
EXPOSE 6666
|
EXPOSE 7860
|
||||||
ENV OLLAMA_ADDR="http://host.docker.internal:11434"
|
ENV OLLAMA_ADDR="http://host.docker.internal:11434"
|
||||||
|
|
||||||
# Lancer le serveur
|
# Rendre le script exécutable et lancer le serveur
|
||||||
CMD ["python", "./PMOCrazyCoder.py"]
|
RUN chmod +x docker_startup.sh
|
||||||
|
RUN mkdir /sandbox /log \
|
||||||
|
&& chown programmer:programmer /sandbox /log
|
||||||
|
|
||||||
|
# Création de la configuration logrotate
|
||||||
|
COPY logrotate-config /etc/logrotate.d/mcp-logs
|
||||||
|
|
||||||
|
# Changer l'utilisateur pour programmeur
|
||||||
|
USER programmer
|
||||||
|
RUN mkdir -p /home/programmer/.config/opencode
|
||||||
|
COPY opencode.json /home/programmer/.config/opencode
|
||||||
|
CMD ["./docker_startup.sh"]
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -5,7 +5,8 @@ IMAGE_NAME = pmo_crazy_coder
|
|||||||
TAG = latest
|
TAG = latest
|
||||||
PORT = 7860
|
PORT = 7860
|
||||||
SANDBOX_VOLUME = "./bac_a_sable"
|
SANDBOX_VOLUME = "./bac_a_sable"
|
||||||
DOCKER_RUN_COMMON = --rm -p $(PORT):$(PORT) -v $(SANDBOX_VOLUME):/sandbox
|
CONTAINER_NAME = $(IMAGE_NAME)
|
||||||
|
DOCKER_RUN_COMMON = --rm -p $(PORT):$(PORT) -v $(SANDBOX_VOLUME):/sandbox --name $(CONTAINER_NAME)
|
||||||
FULL_IMAGE_NAME = $(IMAGE_NAME):$(TAG)
|
FULL_IMAGE_NAME = $(IMAGE_NAME):$(TAG)
|
||||||
|
|
||||||
all: run
|
all: run
|
||||||
@@ -25,6 +26,7 @@ build: stamp/build_PMOCrazyCoder
|
|||||||
run: build $(SANDBOX_VOLUME)
|
run: build $(SANDBOX_VOLUME)
|
||||||
@echo Launching the PMOCrazyCoder MCP server
|
@echo Launching the PMOCrazyCoder MCP server
|
||||||
@docker run $(DOCKER_RUN_COMMON) \
|
@docker run $(DOCKER_RUN_COMMON) \
|
||||||
|
-it \
|
||||||
$(FULL_IMAGE_NAME)
|
$(FULL_IMAGE_NAME)
|
||||||
|
|
||||||
debug: build $(SANDBOX_VOLUME)
|
debug: build $(SANDBOX_VOLUME)
|
||||||
|
|||||||
13
docker_startup.sh
Executable file
13
docker_startup.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Docker Startup Script for MCP Server and Open Code
|
||||||
|
# This script launches the MCP server in background and starts Open Code in interactive mode
|
||||||
|
|
||||||
|
echo "Starting MCP server in background..."
|
||||||
|
python3 PMOCrazyCoder.py >/log/server.log 2>&1 &
|
||||||
|
|
||||||
|
# Give the server a moment to start
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
echo "Starting Open Code in interactive mode..."
|
||||||
|
opencode
|
||||||
13
logrotate-config
Normal file
13
logrotate-config
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/log/server.log /log/opencode.log {
|
||||||
|
daily
|
||||||
|
rotate 5
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
missingok
|
||||||
|
notifempty
|
||||||
|
create 644 programmer programmer
|
||||||
|
sharedscripts
|
||||||
|
postrotate
|
||||||
|
# No restart needed for log files
|
||||||
|
endscript
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user