我试着使用Docker-Compose来创建Redmine
我想要去做的原因
我們打算在一個新的項目中使用Kubernetes。
由於我幾乎沒有使用過Docker,所以我想趁此機會試試使用Docker-Compose。
开发环境
以下是一个可能的中文翻译:
电脑:Windows10
虚拟平台:VirtualBox
操作系统:CentOS7
网络服务器:Nginx 1.25.2(最新版)
容器:Docker 24.0.6
:Docker-Compose 2.6.1
应用程序:Redmine 4.0.5
数据库:MySQL 5.7
请注意
-
- VirtualBox周りやOS周りの設定は今回の内容から外れるので省略します。
-
- イントラ環境等の企業内で検証を行う場合はプロキシ設定も確認すること。
-
- 検証目的のため、rootユーザでやっています。
-
- 証明書は自己署名証明書で行なっています。
- Nginxはリバースプロキシを行うために起動します。
尝试一下
安装所需的软件包
# yum -y install wget net-tools bind-utils yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum -y install docker-ce docker-ce-cli container.io docker-buildx-plugin docker-compose-plugin docker-compose
发布证书
创建工作目录
# mkdir ~/docker-compose
# cd ~/docker-compose
生成私密密钥
# openssl genrsa -out privkey.key 2048
公司社会责任报告的发布
# openssl req -new -key privkey.key -out server.csr
颁发证书
# openssl x509 -days 3650 -req -signkey privkey.key < server.csr > fullchain.crt
启动Docker
# systemctl start docker
# systemctl enable docker
# systemctl status docker
安装Docker-Compose
# curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
创建Docker-Compose的YAML文件。
只需要一种选项:创建YAML文件
* 这次并没有按服务进行分类。
version: "3"
services:
proxy:
image: nginx:latest
ports:
- "80:80"
- "443:443"
container_name: proxy
volumes:
- ./ssl.conf:/etc/nginx/conf.d/ssl.conf
- ./fullchain.crt:/etc/nginx/conf.d/fullchain.crt:ro
- ./privkey.key:/etc/nginx/conf.d/privkey.key:ro
redmime:
container_name: redmine
image: redmine:4.0.5-passenger
restart: always
ports:
- 8080:3000
environment:
TZ: Asia/Tokyo
REDMINE_DB_MYSQL: mysql
REDMINE_DB_DATABASE: redmine_mytheme
REDMINE_DB_USERNAME: redmine_mytheme
REDMINE_DB_PASSWORD: redmine_mytheme
REDMINE_DB_ENCODING: utf8mb4
VIRTUAL_HOST: redmine.example.com
depends_on:
- mysql
volumes:
- ./src/assets:/usr/src/redmine/public/themes/mytheme
- ./src/plugins:/usr/src/redmine/plugins
- ./src/themes:/usr/src/redmine/public/themes
mysql:
container_name: mysql
image: mysql:5.7
restart: always
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: <MySQLのルートユーザのパスワード>
MYSQL_DATABASE: redmine_mytheme
MYSQL_USER: redmine_mytheme
MYSQL_PASSWORD: redmine_mytheme
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --general-log=true --general-log-file=/var/log/mysql/general.log
volumes:
- type: bind
source: ./volume/data
target: /dmp_data
创建用于反向代理的Nginx文件。
server {
root /dev/null;
server_name redmine;
charset UTF-8;
access_log /var/log/nginx/redmine.local.access.log;
error_log /var/log/nginx/redmine.local.error.log;
# Set up SSL only connections:
listen *:443 ssl;
ssl_certificate /etc/nginx/conf.d/fullchain.crt;
ssl_certificate_key /etc/nginx/conf.d/privkey.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';
ssl_protocols TLSv1.2;
ssl_prefer_server_siphers on;
ssl_session_cache builtin:1000 shared:SSL10m;
ssl_session_timeout 5m;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
proxy_pass http://redmine:3000
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 900;
proxy_redirect default;
}
}
server {
listen 80;
server_name redmine;
server_tokens off
return 301 https://$http_host:$request_uri;
}
启动Docker-Compose
# docker-compose up -d
确认容器启动
# docker ps -a
Hosts文件设置
# vi /etc/hosts
※以下を追加する
<仮想マシンのIPアドレス> <バーチャルホスト名>
请确认您的浏览器
https://<バーチャルホスト名>
附加内容
如果更改了docker-compose.yaml文件,需要执行以下命令以应用更改。
# docker-compose up -d --build
# docker-compose up -d
如果检查完毕后要清理的话,请运行以下命令。
清理集装箱
# docker-compose down --rmi all --volumes --remove-orphans
#もしくはこちら
# docker rm -f `docker ps -a -q`
如果在代理环境中进行
添加systemd单位文件
# mkdir -p /etc/systemd/system/docker.service.d
# touch /etc/systemd/system/docker.service.d/override.conf
# vi /etc/systemd/system/docker.service.d/override.conf
※こちらを追加
[Service]
Environment=HTTP_PROXY=<プロキシサーバのURLもしくはIPアドレス>:<ポート番号>
Environment=HTTPS_PROXY=<プロキシサーバのURLもしくはIPアドレス>:<ポート番号>
# systemctl daemon-reload
# systemctl restart docker
※念の為通信状態を確認し、できなければプロファイル上にプロキシ設定を確認などを行うこと
# docker run hello-world
请参考
– 安装Docker引擎