開発環境テンプレート on WSL
はじめに
WIP: 迷走してるなぁ, Docker使うと楽だけれどリソース消費が大きいなぁ.
開発環境を簡単に立てたい, 簡単に移行したい, Windowsアプリをビルドしたい.
Docker for Windowsでもできなくなさそうだが, WSLならより楽をできるのでは.
過去に, VM上になんやかんや構築すれば楽では?と考えたが, 挫折した経験あり.
Common
とりあえず, Alpine. Debianでもいいかも (2020/11).
Distribution | Size |
---|---|
Alpine | 2.6 MB |
Debian | 199 MB |
Kali | 575 MB |
Ubuntu | 980 MB |
$ cd ~
$ adduser nya
$ addgroup nya wheel
$ apk add sudo
$ visudo
/etc/apk/repositories
に追記.
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
セットアップディレクトリを統一する目的もあって, 以降もrootで作業するかな.
Builds
他に必要なのあるかな?
$ apk add vim gcc g++ make cmake git
MariaDB
$ sudo apk add mariadb mariadb-client
$ sudo rm -R /var/lib/mysql/*
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo mysqld_safe&
$ mysql_secure_installation
Gogs
$ sudo apk add gogs
$ sudo gogs web
$ sudo apk add mariadb mariadb-client
$ sudo rm -R /var/lib/mysql/*
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
$ sudo mysqld_safe&
$ mysql_secure_installation
$ sudo apk add gogs
$ sudo gogs web
MariaDBは中途で挫折中.
mysql> DROP DATABASE IF EXISTS gogs;
mysql> CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> CREATE USER 'gogs'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL ON gogs.* TO 'gogs'@'localhost';
http://localhost:3000/
にアクセスすると初期設定画面になるはず. とりあえずSQLite3.
Docker版
とりあえず, SQLiteで, 実用になるかはわからない.
version: '3.3'
services:
gogs:
container_name: gogs
image: gogs/gogs:latest
restart: always
ports:
- 3000:3000
volumes:
- ./data:/data
Redmine
$ sudo apk add openssl-dev
$ sudo apk add ruby ruby-dev ruby-bundler
$ sudo apk add apache2 apache2-ctl apache2-dev imagemagick
$ sudo gem install passenger --no-ri --no-rdoc -V
$ sudo passenger-install-apache2-module
CREATE DATABASE redmine CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
$ sudo apk add openssl-dev
$ sudo apk add ruby ruby-dev ruby-bundler
$ sudo apk add apache2 apache2-ctl apache2-dev imagemagick
$ sudo gem install passenger --no-ri --no-rdoc -V
$ sudo passenger-install-apache2-module
CREATE DATABASE redmine CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
$ sudo mkdir -p /var/www/
$ tar zxvf redmine-x.x.x.tar.gz
$ sudo mv ./redmine-x.x.x /var/www/redmine
$ sudo chown -R redmine:redmine /var/www/redmine
$ cd /var/www/redmine/config
データベースの設定, production
以外は削除してしまっていいと思います.
$ sudo cp ./database.yml.example ./database.yml
$ sudo cp ./configuration.yml.example ./configuration.yml
/var/www/redmine/config/initializers/utf8mb4.rb
ActiveSupport.on_load :active_record do
module ActiveRecord::ConnectionAdapters
class AbstractMysqlAdapter
def create_table_with_innodb_row_format(table_name, options = {})
table_options = options.merge(:options => 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC')
create_table_without_innodb_row_format(table_name, table_options) do |td|
yield td if block_given?
end
end
alias_method_chain :create_table, :innodb_row_format
end
end
end
WIP
Docker版
version: '3.3'
services:
redmine:
container_name: redmine
image: redmine:alpine
restart: always
ports:
- 8100:3000
volumes:
- ./data/plugins:/usr/src/redmine/plugins
- ./data/themes:/usr/src/redmine/public/themes
environment:
REDMINE_DB_MYSQL: redmine-db
REDMINE_DB_PASSWORD: redmine
redmine-db:
image: mariadb
container_name: redmine-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: redmine
MYSQL_DATABASE: redmine
volumes:
- ./data/db:/var/lib/mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
ログインは, admin
, admin
.
Jenkins
Jenkinsはメンテナンスする人間としては不満しかない. じゃあお前が作れという話ではあるが, そんな意欲はない.
GoCDは環境構築挫折中なので待たれよ (おそらく挫折したまま終わる).
apk add openjdk11-jre ttf-dejavu
mkdir jenkins;cd jenkins
wget https://get.jenkins.io/war-stable/2.249.3/jenkins.war
cd ..
プロキシの内側だとコマンドラインで指定しないと, プラグインインストールで詰みます.
java -jar ./jenkins/jenkins.war -Dhttp.proxyHost=xxx.xxx.xxx.xxx -Dhttp.proxyPort=8080 -Dhttps.proxyHost=xxx.xxx.xxx.xxx -Dhttps.proxyPort=8080 -Dhttps.protocols=TLSv1.1,TLSv1.2 -jar jenkins.war --httpPort=8090 > /dev/null 2&>1 &
一度起動すれば, $HOME/.jenkins/secrets/initialAdminPassword
が作成されるので, adminでログインする.
テスト
本命なのですが, メンテナンスする人間には苦痛かも.
シェルの実行, 警告が出るが動くかな.
/mnt/c/Windows/System32/cmd.exe /c echo test
起動
WSLの欠点は起動スクリプトが動作しないことかな.
#!/bin/sh
java -jar /root/jenkins/jenkins.war --httpPort=8090 -Djava.awt.headless=true > /dev/null 2>&1 &
まとめ
Dockerを使うとどうしてもリソースを喰うのはどうしようもない.
ビルド済みが上手くいかなくて, ソースからビルドするために, wgetやgolangをインストールしているのが無駄になっている.
WSLの〇ちがいぶりは, はじめから/mnt/
にWindowsディレクトリがマウントされていることなどかわいいもので, エクスプローラからLinuxのファイルシステムが見えること.
\\wsl$
TODO
- しばらく運用後, 別環境に移動した場合に正常に動作するか.
- GoCD とか
OpenProject
Redmineと両方は重いのではずす.
$ git clone --depth=1 --branch=stable/11 https://github.com/opf/openproject
$ cd openproject
$ docker-compose up -d
http://localhost:8080
にアクセスする, 初期設定は admin
, admin
.
Author And Source
この問題について(開発環境テンプレート on WSL), 我々は、より多くの情報をここで見つけました https://qiita.com/taqu/items/c8a4668c25ece53bf56d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .