Hinweis: ich noch nicht an Bukharov Sergey's answer ausgesehen haben, so dass mehr elegant sein kann.
Hier ist, was ich mir ausgedacht habe. Ich habe 2 Methoden gefunden, um die Netzwerkfreigabefähigkeit zu erreichen, und 1 Hack für ein Redmine-Problem, das bei Verwendung dieser Methoden auftritt.
Methode 1 (bevorzugt, weil es kürzer ist, aber vielleicht nicht, weil es veraltet ist?): Container Linking
Docker-compose.yaml
version: '2'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
# Method 1: Linking
links:
- redmine
redmine:
image: redmine
# Method 1: Exposing port to linked containers
expose:
- "3000"
nginx.conf
http {
server {
listen 80;
# Method 1: Access via alias from link
location /redmine/ {
proxy_pass http://redmine:3000/;
}
}
Methode 2: Defining a Network
Docker-compose.yaml
version: '2'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
# Method 2
networks:
shared_net:
ipv4_address: 172.22.0.4
redmine:
image: redmine
# Method 2
networks:
shared_net:
ipv4_address: 172.22.0.5
# Method number 2: Via networks
networks:
shared_net:
driver: bridge
ipam:
config:
- subnet: 172.22.0.0/16
gateway: 172.22.0.1
nginx.conf
http {
server {
listen 80;
# Method 2: Access via ip address in shared network
location /redmine_networked/ {
proxy_pass http://172.22.0.5:3000/;
}
}
}
Redmine Hack: Accessing redmine via a suburl
Die obigen Lösungen ermöglichen den Zugriff auf Redmine Homepage. Alle Redmine-URLs verweisen jedoch auf root (z. B. "/" für "home" anstelle von "/ redmine" oder "/ redmine_networked"). Also keiner dieser Links wird funktionieren. Wenn nginx eingerichtet wurde, alle '/' URLs an Redmine umzuleiten, wäre dies kein Problem. Der folgende Hack geht davon aus, dass dies nicht der Fall ist.
Damit Redmine auf die konfigurierten URLs verweist, muss die Datei config/environment.rb bearbeitet werden.
Hier ist der Hack:
> docker exec -it <redmine_container> bash
redmine> cd config
# We're going to install vim (this is a hack)
redmine> apt-get update
redmine> apt-get install vim
redmine> vim environment.rb
Ändern Sie die folgenden Zeilen am Ende Ihrer config/environment.rb
Initialize the Rails application Rails.application.initialize!
zu
RedmineApp::Application.routes.default_scope = "/redmine"
Initialize the Rails application Rails.application.initialize!
redmine> exit
> docker restart <redmine> (or just kill other docker process and run docker up again)