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" \
|
||||
> /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
|
||||
|
||||
# Installer les outils de développement Go et Rust
|
||||
@@ -24,7 +27,8 @@ RUN apt-get update && \
|
||||
black \
|
||||
flake8 \
|
||||
mypy \
|
||||
isort
|
||||
isort \
|
||||
logrotate
|
||||
|
||||
COPY tools tools
|
||||
|
||||
@@ -50,12 +54,30 @@ RUN cargo binstall --strategies crate-meta-data jj-cli
|
||||
# Installer le SDK MCP Python
|
||||
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
|
||||
COPY src .
|
||||
|
||||
# Copier le script de démarrage
|
||||
COPY docker_startup.sh .
|
||||
COPY opencode.json ~/.config/opencode
|
||||
|
||||
# Exposer le port
|
||||
EXPOSE 6666
|
||||
EXPOSE 7860
|
||||
ENV OLLAMA_ADDR="http://host.docker.internal:11434"
|
||||
|
||||
# Lancer le serveur
|
||||
CMD ["python", "./PMOCrazyCoder.py"]
|
||||
# Rendre le script exécutable et lancer le serveur
|
||||
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
|
||||
PORT = 7860
|
||||
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)
|
||||
|
||||
all: run
|
||||
@@ -25,6 +26,7 @@ build: stamp/build_PMOCrazyCoder
|
||||
run: build $(SANDBOX_VOLUME)
|
||||
@echo Launching the PMOCrazyCoder MCP server
|
||||
@docker run $(DOCKER_RUN_COMMON) \
|
||||
-it \
|
||||
$(FULL_IMAGE_NAME)
|
||||
|
||||
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