常用环境搭建
决定记录一下搭建和配置各种常用编程环境,包括 maven,jdk,node 等,和软件环境,包括 mysql,redis,kafka 等的过程以方便在将来进行参考和查阅,能使用 docker 则使用 docker。该文档将持续维护。
需注意:该文档目的是为了之后搭建本地开发环境时能更加方便,不需要反复去查阅文档和博客,并非为了生产目的,因此(对一些中间件)不考虑安全性等问题。
tips
关于解压
*nix 系统使用命令行进行解压,因此有一些必要去介绍一下使用。
对于 tar.xz 和 tar.gz,使用 tar 命令,模版如下:
1 |
|
比如,解压当前目录的一个压缩文件到当前目录的 test 文件夹(该文件夹需提前创建):
1 |
|
tar.gz其实上是2个工具。tar是打包工具,把很多文件打包成一个文件,gz是压缩格式。
对于 zip,使用 unzip 命令,模板如下:
1 |
|
示例如下,要解压的文件夹不需要提前创建:
1 |
|
docker run 的使用示例
拷贝自tldr docker-run
命令。
docker run
Run a command in a new Docker container.
More information: https://docs.docker.com/engine/reference/commandline/run/.
Run command in a new container from a tagged image:
docker run image:tag command
Run command in a new container in background and display its ID:
docker run -d image command
Run command in a one-off container in interactive mode and pseudo-TTY:
docker run --rm -it image command
Run command in a new container with passed environment variables:
docker run -e 'variable=value' -e variable image command
Run command in a new container with bind mounted volumes:
docker run -v /path/to/host_path:/path/to/container_path image command
Run command in a new container with published ports:
docker run -p host_port:container_port image command
Run command in a new container overwriting the entrypoint of the image:
docker run --entrypoint command image
Run command in a new container connecting it to a network:
docker run --network network image
TODO docker compose,以及如何从镜像中拷出来配置文件
编程环境
对于编程环境,尽量从国内镜像站去下载以保证速度。
小 tip: Windows 系统可以按 win 键,输入“env”或“path”并回车,能直接打开“编辑系统环境变量”窗口
JDK 8
在这里 下载对应架构和系统的 JDK 的压缩包并解压到特定位置,将其 bin
和 jre\bin
目录加入 PATH,并添加变量 JAVA_HOME,以其目录作为值即可。
比如,将该压缩包解压至E:\env
,此时目录结构为:
1 |
|
此时,在 PATH 中添加:
1 |
|
添加 JAVA_HOME 变量,值为:E:\env\jdk8u332-b09
。
虽然很多资料说 JAVA_HOME 已经不需要设置了,但事实证明很多环境,如 maven 的一些插件,hadoop 等都是依赖这个变量的,仍旧有必要进行配置。
Maven
TODO
修改镜像源
TODO
Sbt
TODO
修改镜像源
TODO
软件环境
mysql,redis 等环境虽然也能够直接安装环境,但其总是比较麻烦的,且 win 下可能会出现更多问题,为此使用 docker 减轻负担是非常合适的。
MySQL
创建 MySQL 8 容器,其 hostname 为 some-mysql,使用 root 账户作为用户,密码为 root,启动时创建 database db:
docker run --name some-mysql --hostname some-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=db -d mysql:8
在命令行下连接到 mysql 8 服务器,其 host 为 some-mysql,使用 root 用户(好像需要在同一个 network 下,且 bridge 不行):
docker run --rm -it mysql:8 mysql -hsome-mysql -uroot -proot
使用自定义的 mysql 配置文件:
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8
使用命令行的方式进行配置:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
启动时执行特定 sql 文件:
docker run --name some-mysql -v /my/custom/sql/dir:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8
需注意:MySQL 服务器在容器启动后才会开始启动,这在使用 docker-compose 等工具时可能会出现问题,这时应当用轮询等手段待服务器启动后再进行其他操作。
JDBC 配置
1 |
|
Oracle
TODO
JDBC 配置
TODO
Redis
跑个 Redis 实例:
docker run --name some-redis -d redis
使用 redis-cli 连接 hostname 为
some-redis
的实例:docker run -it --rm redis redis-cli -h some-redis
把默认配置文件拷出来:
1
2
3docker run --rm -it -v $(pwd):/shareFiles redis bash
cp /usr/local/etc/redis/ /shareFiles/redis
exit自定义配置:
可以使用 Dockerfile 直接替换:FROM redis COPY redis.conf /usr/local/etc/redis/redis.conf CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
或者使用
-v
:docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
TODO 还有哨兵,集群模式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!